-1

我有一个带有 GL_REPEAT 的无缝 Texture2D 和几个正确映射此纹理的三角形。

对于这些三角形中的每个顶点,我正在更新 positionX 以将此纹理作为视差背景移动,并且它会获得较大的值。

u = 位置X/纹理宽度;v = 位置 Y/纹理高度;

问题是,当 u <~50 时,一切正常,纹理重复,但在达到某个限制后,它开始显示分辨率较低的纹理,并且在每 X 距离之后,情况变得更糟。

我怎样才能正确地将这个 u & v 限制为更小的值?

我已经尝试简单地为每个顶点以这种方式限制你

float pWsp = positionX/(pTextureWidth); 
float pResult = pWsp -  ((int)pWsp); 
return pResult;

但是每次纹理结束时都会反转 int X 这给了我奇怪的结果

4

1 回答 1

0

您遇到了纹理坐标的精度问题。随着整数部分的幅度增加,小数部分的精度降低,您开始看到伪影。

正如您所观察到的,您无法修复此每个顶点,因为您会遇到环绕问题,其中单个三角形的顶点最终会不一致地应用校正。

您需要将校正均匀地应用于整个多边形。执行此操作的最佳位置是在源数据中 - 将其分成块,这样纹理坐标就不会变得太大。

于 2013-02-27T17:08:42.177 回答