我是 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);
给了我一个带有整个精灵表的矩形,因此必须u
小于1.0f。v
glTexCoord2f
我现在需要的是一个公式,它将计算纹理中任何精灵 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
and v
。最后一点解释得不是很好,所以如果你愿意,我会解释得更好。
先感谢您!