Opengl es OpenGL ES:避免纹理之间出现白线

Opengl es OpenGL ES:避免纹理之间出现白线,opengl-es,Opengl Es,我正在制作一个天空盒,在每个纹理之间有一条很小的白线, 顶点和纹理的坐标看起来还可以(只有1和-1,所以我看不出有任何可能失败的地方) 有什么办法解决这个问题吗?TL;DR:简单的解决方案:使用立方体贴图纹理 说明: (只有1和-1,所以我看不出我会在那里失败) 纹理坐标-1和1不会落在像素中心。这基本上是一个围栏问题,我在这里解释过 请注意,在skybox的情况下,通过在六个单独绘制的四边形上不使用6种不同的纹理,而是使用立方体贴图纹理,其中六条边包含在球体拓扑中的一个连续图像中,可以很容易

我正在制作一个天空盒,在每个纹理之间有一条很小的白线, 顶点和纹理的坐标看起来还可以(只有1和-1,所以我看不出有任何可能失败的地方)


有什么办法解决这个问题吗?

TL;DR:简单的解决方案:使用立方体贴图纹理

说明:

(只有1和-1,所以我看不出我会在那里失败)

纹理坐标-1和1不会落在像素中心。这基本上是一个围栏问题,我在这里解释过


请注意,在skybox的情况下,通过在六个单独绘制的四边形上不使用6种不同的纹理,而是使用立方体贴图纹理,其中六条边包含在球体拓扑中的一个连续图像中,可以很容易地避免该问题。

TL;DR:简单的解决方案:使用立方体贴图纹理

说明:

(只有1和-1,所以我看不出我会在那里失败)

纹理坐标-1和1不会落在像素中心。这基本上是一个围栏问题,我在这里解释过


请注意,在skybox的情况下,通过在六个单独绘制的四边形上不使用6种不同的纹理,而是使用立方体贴图纹理,可以轻松避免该问题,其中六条边包含在一个类似球体的拓扑结构的连续图像中。

我听说有一种方法可以强制openGL显示纹理的最后一条像素线,而不是绘制一条白线,但我找不到这个函数:我更愿意找到这种解决方案,而不是改变打印纹理的方式(更改太多…:s)@IggY是的,这意味着正确设置环绕模式:
glTexParameteri(GL\u纹理\u 2D、GL\u纹理\u环绕、GL\u夹紧到\u边缘)
对于t坐标也是如此。虽然这可能会干扰您的texCoords从-1变为1,您必须将其从0变为1。但datenwolf所说的仍然是在这种特定情况下的最佳解决方案(并且可能比5个DrawCall更快,其间绑定了5种不同的纹理)。glTexParameteri(GL_TEXTURE_2D、GL_TEXTURE_WRAP_S、GL_CLAMP_TO_EDGE)正是我想要的,谢谢:)我知道立方体贴图应该是绘制立方体贴图的最佳解决方案……但我在openGL中真的很在行,我不想这样做,现在我的立方体已经按照我的意愿绘制了……我真的不想更改它:)@IggY作为一般规则,您应该始终设置所有需要特殊值的参数,如包装和过滤模式,并且不使用任何默认值。我听说有一种方法可以强制openGL显示纹理的最后一条像素线,而不是绘制白线,但是我找不到这个函数:s我更愿意找到这种解决方案,而不是改变我打印纹理的方式(太多的改变…:s)@IggY是的,这意味着要适当地设置包装模式:
glTexParameteri(GL\u纹理\u 2D,GL\u纹理\u包装,GL\u夹紧到\u边缘)
,对于t坐标也是如此。虽然这可能会干扰texCoords从-1变为1,但您必须将其从0变为1。但datenwolf所说的仍然是这个特殊情况下的最佳解决方案(可能也比5次DrawCall更快,其间绑定了5种不同的纹理)。glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP_TO_EDGE)正是我所寻找的,谢谢:)我知道立方体贴图应该是绘制立方体贴图的最佳解决方案……但我在openGL中真的很在行,我不想这样做,现在我的立方体已经按照我的意愿绘制了……我真的不想更改它:)@IggY作为一般规则,您应该始终设置所有需要特殊值的参数,与包装和过滤模式类似,不依赖任何默认值。