我是OpenGL的新手,目前正在尝试渲染一个立方体,其中四个面各有不同的纹理。
众所周知,为每个面类型单独使用纹理会占用大量内存,并使应用程序变慢。
目前我正在尝试为精灵使用纹理表。我有一个图形文件,每个纹理都是16x16像素,256个精灵排列成一个正方形(16x16)。
我知道
GL11.glTexCoord2f(1.0f, 0.0f);
GL11.glVertex3f(1.0f, 1.0f, 1.0f);
GL11.glTexCoord2f(0.0f, 0.0f);
GL11.glVertex3f(0.0f, 1.0f, 1.0f);
GL11.glTexCoord2f(0.0f, 1.0f);
GL11.glVertex3f(0.0f, 0.0f, 1.0f);
GL11.glTexCoord2f(1.0f, 1.0f);
GL11.glVertex3f(1.0f, 0.0f, 1.0f);
这会给我一个包含整个精灵表的矩形,所以glTexCoord2f
中的u
和v
必须小于1.0f。
现在我需要的是一个公式,可以计算纹理中任何精灵id的u
和v
。
纹理位图中的ID如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
17 18 16 20 21 22 23 24...
我希望对于这些ID中的任何一个,都能拥有u
和v
。最后一部分没有被很好地解释清楚,如果您需要的话,我可以更好地解释一下。
提前感谢您!