【发布时间】:2010-12-27 20:06:53
【问题描述】:
我是 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 和glTexCoord2f 的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。最后一点解释得不是很好,如果你愿意,我会解释得更好。
提前谢谢你!
【问题讨论】: