OpenGL ES纹理坐标映射和限制

时间:2013-02-27 17:02:37

标签: opengl-es textures texture-mapping

我有一个带有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,这给了我奇怪的结果

1 个答案:

答案 0 :(得分:0)

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

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

您需要将校正均匀地应用于整个多边形。执行此操作的最佳位置是源数据 - 将其分解为块,使得没有任何纹理坐标变得太大。