【发布时间】:2011-10-20 05:07:28
【问题描述】:
我正在使用一个纹理图集,它是通过将 2 个相同大小的图像并排拼接在一起制作的。 当我修改纹理坐标时,我按以下顺序执行以下操作:
-
if(texCoordx>1) texCoordx = texCoordx % 1- 所以一个纹理不会泄漏到另一个纹理中。 -
if(texCoordx<0) texCoordx = 1 + texCoordx- 同样,一个纹理不会泄漏到另一个纹理中。 - 将纹理坐标缩放 0.5。
- 如果要在右侧绘制纹理,则添加 0.5。
这效果很好,但是,我似乎在纹理 s 坐标接近 1 和 0 的边缘处出现“污迹”。看起来它正在沿 t 轴。我附上了截图。
我知道找到了一个答案here,但它只是稍微缩小了污迹。我正在使用自己的着色器,但它没有对纹理坐标进行任何修改。我也在启用GL_REPEAT。有人知道任何可能的原因/解决方案吗?
【问题讨论】:
-
你在哪里执行 1 和 2 ?它是在您的着色器中还是在您的程序中?
-
我应该如何解读你的图片?这是地图集纹理之一吗?从左到右的原始 texcoords 是什么(只有 s 似乎相关)?可能类似于 (0, 1, 2) 以及 4 步转换后的 texCoords 是什么?
-
@neodelphi - 我在我的程序中执行它,着色器不会修改纹理坐标 Christian - 你解释它的方式是正确的,你在下面给出的答案很可能是什么继续。非常感谢!