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

gyo*_*dor 0 textures opengl-es objective-c texture-mapping

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

Dav*_*ave 5

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

为了避免它,将纹理告诉CLAMP,而不是REPEAT(重复与平铺同义).纹理默认重复,所以你需要一个这样的行:

    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
    glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );
Run Code Online (Sandbox Code Playgroud)

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