我的opengl纹理底部有奇怪的细线或点

时间:2011-03-01 08:28:02

标签: objective-c opengl-es textures texture-mapping

我制作了一个与此类似的应用程序:http://www.youtube.com/watch?v=U2uH-jrsSxs(声音有点大而且糟糕)。问题是在每个纹理的底部都有一条非常细的线/点/出现的东西。这几乎是不明显的,但它在那里,我不知道为什么。我的纹理大小是256x256。我测试了纹理尺寸为128x128的earliear我觉得那里什么都没有,但不确定。这不是什么大问题,因为它很薄但我觉得很烦人。这是一个screenshot。我选择RED那些线。我是OpenGL(ES)的菜鸟,所以我可能做错了。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:5)

这将是由于OpenGL平铺纹理以填充指定区域。因此,您所看到的细线将是刚开始重复的纹理的顶部。

要避免它,请将纹理告诉CLAMP,而不是REPEAT(重复与平铺同义)。默认情况下纹理重复,因此您需要这样的行:

    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );

如果你倾向于这种方式,那么它周围也会有一个无代码的躲避方式。只需编辑源图形,以便顶部或左侧边缘不存在像素。因此,将整个批次向下移动一个像素,并在画布内向右移动一个像素。但是当然如果你想让图像出现在完全相同的位置,你需要调整坐标。