2013-02-27 97 views
-1

我有一个无缝的Texture2D与GL_REPEAT和这个纹理映射正确的几个三角形。OpenGL ES纹理坐标映射和限制

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

u = positionX/texture_width; v = positionY/texture_height;

问题在于,当你工作的很好,纹理重复,但达到一定限度后,它开始显示像低分辨率纹理之类的东西,并且在每X距离后它变得越来越差。

我怎样才能正确地限制这个更小的值?

我只是试图为每个顶点限制ü这样

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

但每次质地结束反转INT X,给了我奇怪的结果

回答

0

您正在运行到精度问题与纹理坐标。随着整数部分的幅度增加,小数部分的精度会降低,并且开始看到伪像。

正如你所看到的,你不能修复这个每个顶点,因为你会得到环绕问题,其中单个三角形的顶点将最终应用不一致的修正。

您需要将校正均匀地应用于整个多边形。做这件事的最好的地方是在源数据中 - 把它分解成块,这样纹理坐标不会太大。