《设置过滤器 gl_linear》由会员分享,可在线阅读,更多相关《设置过滤器 gl_linear(2页珍藏版)》请在金锄头文库上搜索。
1、/ / / void siyifu:RendModifyPixels(CCImage *image,int TouchEvent, double downx,double downy, double upx, double upy,double movex,double movey) if (TouchEvent=1) glBindTexture(GL_TEXTURE_2D, image-mTexture-mTextureId); / 设置过滤器 GL_LINEAR 利用线形插值,效果好但计算量大。 glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_F
2、ILTER, GL_LINEAR); glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);void* imageBuffer = image-mTexture-imageBuffer; unsigned char* tempBuffer = (unsigned char*)imageBuffer;/图像文件的储存顺序是 BGR?, 我们需要把它转换成 RGB 来生成纹理? ?。 int index=0; /判断 RGB 值个数 int rgbNum = 4; int width = image-mTexture-mT
3、extureWidth; int height = image-mTexture-mTextureHeight; int imgWidth=image-mWidth; int imgHeight=image-mHeight; int circus = 10;int yMinIndx = downy - circus; int yMaxIndx = downy + circus; int xMinIndx = downx - circus; int xMaxIndx = downx + circus; if (yMinIndximgHeight)yMaxIndx=imgHeight; if (x
4、MaxIndximgWidth)xMaxIndx=imgWidth;for (int i=yMinIndx;iyMaxIndx;i+) for (int j=xMinIndx;jxMaxIndx;j+) if (j-downx)*(j-downx)+(i-downy)*(i-downy)=circus*circus ) int yIndx = i*width*rgbNum;int xIndx = j*rgbNum; tempBufferyIndx+xIndx = 0; tempBufferyIndx+xIndx+1 = 0; tempBufferyIndx+xIndx+2 = 0; tempB
5、ufferyIndx+xIndx+3 = 0; /*for (int i=0;i100;i+) for (int j=0;j50;j+) int yIndx = i*width*rgbNum; int xIndx = j*rgbNum; tempBufferyIndx+xIndx = 0; tempBufferyIndx+xIndx+1 = 0; tempBufferyIndx+xIndx+2 = 0; tempBufferyIndx+xIndx+3 = 0; */ /*for(int i=0;i50*320*4;i+) tempBufferi=0; */ glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height,0, GL_RGBA, GL_UNSIGNED_BYTE, tempBuffer);