我有一个带有GL_REPEAT的无缝Texture2D和几个正确映射此纹理的三角形。
对于这些三角形中的每个顶点,我正在更新positionX以将此纹理作为视差背景移动并且它获得较大的值。
u = positionX / texture_width; v = positionY / texture_height;
问题是,当你< ~~ 50,一切正常,纹理重复,但在达到一定限度后,它开始显示低分辨率纹理,每隔X距离后就会变得更糟。
我怎样才能正确限制这个u& v更小的值?
我已经尝试过简单地为每个顶点限制你这样做
float pWsp = positionX/(pTextureWidth);
float pResult = pWsp - ((int)pWsp);
return pResult;
但每次纹理结束都反转为X,这给了我奇怪的结果
答案 0 :(得分:0)
您遇到了纹理坐标的精度问题。随着整数部分的大小增加,小数部分的精度会降低,并且您开始看到伪影。
正如您所观察到的,您无法修复此每个顶点,因为您会遇到包装问题,其中单个三角形的顶点最终会不一致地应用更正。
您需要将校正均匀地应用于整个多边形。执行此操作的最佳位置是源数据 - 将其分解为块,使得没有任何纹理坐标变得太大。