opengl贴图的问题,为什么中间会有一条线???

IT_magnate 2010-11-08 05:17:45
我先把图片分割,然后再贴到相邻的两个长方形内,为什么中间这个地方会有一条线呢,请高手给点提示。。。
谢谢了!

纹理设置代码如下:

int i, width, height;
BOOL sizeToFit = NO;
GLubyte * data = NULL;
CGContextRef ct = NULL;
width = CGImageGetWidth(image);
height = CGImageGetHeight(image);

if((width != 1) && (width & (width - 1)))
{
i = 1;
while((sizeToFit ? 2 * i : i) < width)
i *= 2;
width = i;
}
if((height != 1) && (height & (height - 1)))
{
i = 1;
while((sizeToFit ? 2 * i : i) < height)
i *= 2;
height = i;
}
while((width > kMaxTextureSize) || (height > kMaxTextureSize))
{
width /= 2;
height /= 2;
}

data = (GLubyte *)malloc(height * width * 4);
ct = CGBitmapContextCreate(data,
width,
height,
8,
width * 4,
CGImageGetColorSpace(image),
kCGImageAlphaPremultipliedLast);

CGContextClearRect(ct, CGRectMake(0, 0, width, height));
CGContextTranslateCTM(ct, 0.0, height);
CGContextScaleCTM(ct, 1.0, -1.0);
CGContextDrawImage(ct, CGRectMake(0, 0, width, height), image);
// CGImageRef saveImageRef = CGBitmapContextCreateImage(ct);
// UIImage * saveImage = [UIImage imageWithCGImage:saveImageRef];
// NSString * savePath = [NSString stringWithFormat:@"%@/Documents/%d.jpg", NSHomeDirectory(), location];
// [UIImageJPEGRepresentation(saveImage, 1.0) writeToFile:savePath atomically:YES];
// CGImageRelease(saveImageRef);
// CGContextRelease(ct);

glBindTexture(GL_TEXTURE_2D, location);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
// glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
// glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
// glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);

free(data);

绘图代码如下:

// Our new object definition code goes here
[EAGLContext setCurrentContext:context];
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);
glViewport(0, 0, backingWidth, backingHeight);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

// glEnable(GL_CULL_FACE);
// glFrontFace(GL_CCW);


glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glScalef(scaleX, scaleY, scaleZ);
_angle = 30;
// _angle += 5;
glRotatef(_angle, 0, 1, 0);
glRotatef(10.0, 0, 1, 0);

glVertexPointer(3, GL_FLOAT, 0, vertices);
glTexCoordPointer(2, GL_SHORT, 0, texCoords);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);

for (int i = 0; i < POLYGON; i++)
{
glBindTexture(GL_TEXTURE_2D, _textures[i]);
glDrawArrays(GL_TRIANGLE_FAN, i * 4, 4);
}

// Our new drawing code goes here
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer);
[context presentRenderbuffer:GL_RENDERBUFFER_OES];

我把data里面的内容保存的时候,并没有发现有这条缝隙

CGImageRef saveImageRef = CGBitmapContextCreateImage(ct);
UIImage * saveImage = [UIImage imageWithCGImage:saveImageRef];
NSString * savePath = [NSString stringWithFormat:@"%@/Documents/%d.jpg", NSHomeDirectory(), location];
[UIImageJPEGRepresentation(saveImage, 1.0) writeToFile:savePath atomically:YES];
CGImageRelease(saveImageRef);
CGContextRelease(ct);
...全文
286 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
九天雁翎 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 n5 的回复:]

楼主搜索一下 opengl 0.375试试
如果还不行,试试改成nearest过滤
[/Quote]

你更牛.............
九天雁翎 2010-12-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 feng_source 的回复:]

是由于在分界处的偏导数不连续造成的
[/Quote]

还是你牛
陌尘笑 2010-11-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cloudhsu 的回复:]

引用 3 楼 benyoulai5 的回复:
我都混cocoa 跟devdiv

我都混google跟stack overflow.....
[/Quote]

嗯呢 你是我心目中的大神
google也是在用
n5 2010-11-13
  • 打赏
  • 举报
回复
楼主搜索一下 opengl 0.375试试
如果还不行,试试改成nearest过滤
feng_source 2010-11-11
  • 打赏
  • 举报
回复
是由于在分界处的偏导数不连续造成的
IT_magnate 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 benyoulai5 的回复:]

我都混cocoa 跟devdiv
[/Quote]

我在cocoa也发了帖子,问题还是没解决,去devdiv看看
云瑀 2010-11-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 benyoulai5 的回复:]
我都混cocoa 跟devdiv
[/Quote]
我都混google跟stack overflow.....
云瑀 2010-11-10
  • 打赏
  • 举报
回复
長方形的框線沒弄掉吧
IT_magnate 2010-11-09
  • 打赏
  • 举报
回复
iphone版人气这么低啊~~~
陌尘笑 2010-11-09
  • 打赏
  • 举报
回复
我都混cocoa 跟devdiv
陌尘笑 2010-11-09
  • 打赏
  • 举报
回复
csdn的iphone不行`

29,027

社区成员

发帖
与我相关
我的任务
社区描述
主要讨论与iOS相关的软件和技术
社区管理员
  • iOS
  • 大熊猫侯佩
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧