0

在 andrid 上的 opengl es 中,当我将两个纹理并排放置时,有一个轻微的接缝,您可以在其中看到它们后面的绘制对象。基本上看起来像一个小差距。我将其缩小到 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 接缝消失但纹理看起来像垃圾。我在这里还有其他选择吗?

4

1 回答 1

1

纹理边缘的采样行为取决于您的纹理环绕设置,您可以glTexParamteri()使用 、GL_TEXTURE_WRAP_SGL_TEXTURE_WRAP_T作为参数名称进行设置。它们分别控制两个纹理方向的环绕模式。

这些参数的默认值为GL_REPEAT,它会创建纹理的重复图案。这意味着当您接近纹理的左边缘并到达最后一半纹理像素时,将在最左边和最右边的像素之间发生线性插值。这很可能导致您的情况出现接缝。

ES 2.0 中的其他有效值是GL_MIRRORED_REPEATGL_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);
于 2014-07-26T05:02:01.633 回答