乐器鼓励我使用GL_SHORTs作为纹理坐标。我这样做是为了我只需要值0和1的四边形。
如果短路的精度足够,我还可以将GL_SHORT用于需要0到1之间的值的其他情况吗?如果是这样的话?
答案 0 :(得分:5)
要获得最大精度,可以使用值0..32767将纹理坐标指定为GL_SHORT,以指定从0.0f到1.0f的值。然后你将得到精度1/32767,大约是0.00003。这对你来说够了吗? - 这取决于您和您的申请。很可能它对你来说已经足够了。
要指定介于0和1之间的某个值,则要么使用带缩放的纹理矩阵(如果使用GLES1),要么在片段着色器中将纹理坐标与适当的缩放均匀相乘(如果您使用的是GLES2)。
这是GLES1的一个简单示例 - 假设您的纹理为100x200,并且您不需要指定纹理坐标,其精度低于1个纹素。然后,您可以设置纹理矩阵以缩放以下因子 - 1/100和1/200:
glMatrixMode(GL_TEXTURE);
glPushMatrix();
glLoadIdentity();
glScalex(65536/100, 65536/200, 1);
glMatrixMode(GL_MODELVIEW);
在您的顶点数组/缓冲区中,您可以使用: