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