当我在两个纹理彼此相邻的地方放置andrid时,有一个轻微的缝隙,你可以在其中看到它们后面的绘制对象。基本上看起来像一个小差距。我把它缩小到mipmapping
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
如果我将它们都设置为GL_NEAREST,则接缝会消失,但纹理看起来像废话。我还有其他选择吗?
答案 0 :(得分:1)
纹理边缘的采样行为取决于您使用glTexParamteri()
设置的纹理包装设置,使用GL_TEXTURE_WRAP_S
和GL_TEXTURE_WRAP_T
作为参数名称。它们分别控制两个纹理方向的包裹模式。
这些参数的默认值为GL_REPEAT
,它会创建纹理的重复模式。这意味着当您接近纹理的左边缘并到达最后一半纹素时,将在最左边和最右边的像素之间进行线性插值。这很可能会导致你的接缝。
ES 2.0中的其他有效值为GL_MIRRORED_REPEAT
和GL_CLAMP_TO_EDGE
。两者都应该更适合您的情况,但GL_CLAMP_TO_EDGE
是最直接的。它将在接近边缘时简单地使用边缘处的纹素,而不会对后半个纹素进行任何插值。
您可以使用以下方法设置这些参数值:
glTexParamteri(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParamteri(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);