我正在开发一个使用OpenGL ES 2进行绘制的iPhone应用程序。通常情况下,纹理坐标被定义在0-1范围内,但出于可读性的考虑,我希望将它们从0-1023(我的TextureAtlas大小)进行映射。
我看过一些定义了这种坐标的示例代码,但没能找出之前调用了哪些方法来实现这个目的。可能涉及到glMatrixMode(GL_TEXTURE)
,但我不确定如何实现。
我的最终目标是像这样实现,其中我将在atlas中使用的纹理位于左上角的48px正方形中:
GLshort texcoords[]={
48,48,
0,48,
48,0,
0,0,
};
glVertexAttribPointer(ATTRIB_TEXTUREPOSITON, 2, GL_SHORT, 0, 0, texcoords);
glEnableVertexAttribArray(ATTRIB_TEXTUREPOSITON);
precision highp float;
。 如果您的纹理大于1024x1024,则mediump无法为您提供足够的精度来对纹理中的每个像素进行采样。 - Danny Dulai