0

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

4

1 回答 1

5

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

为避免这种情况,请将纹理告诉 CLAMP,而不是 REPEAT(重复是平铺的同义词)。纹理默认重复,所以你会想要这样的一行:

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

如果您有这种倾向,那么还有一种不涉及代码的方式。只需编辑源图形,使顶部或左侧边缘不存在像素。因此,在其画布内将整个批次向下移动一个像素并向右移动一个像素。但是,如果您希望图像出现在完全相同的位置,那么您当然需要调整坐标。

于 2011-03-01T09:15:24.473 回答