【问题标题】:Opengl seamless textureOpengl 无缝纹理
【发布时间】:2014-09-17 23:38:58
【问题描述】:

在 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,接缝就会消失,但纹理看起来像垃圾。我在这里还有其他选择吗?

【问题讨论】:

  • 你的对象网格对齐了吗?
  • GL_TEXTURE_WRAP_SGL_TEXTURE_WRAP_T 的值是多少?如果您还没有这样做,您可能想尝试将它们设置为 GL_CLAMP_TO_EDGE
  • @RetoKoradi 谢谢!成功了。

标签: opengl-es textures mipmaps


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-17
    • 1970-01-01
    • 2014-06-28
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多