Я новичок в OpenGL, и в настоящее время я пытаюсь отобразить куб с четырьмя гранями, каждый с другой текстурой.LWJGL OpenGL sprite sheet
Как вы знаете, наличие отдельной текстуры для каждого типа лица очень интенсивно для памяти и делает приложение медленным.
На данный момент я пытаюсь использовать лист текстуры для спрайта. У меня есть графический файл с каждой текстурой 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
v
из glTexCoord2f
имеют быть меньше, чем 1.0f.
Теперь мне нужна формула, которая будет вычислять u
и v
любого идентификатора спрайта в текстуре.
Идентификаторы идут следующим образом в текстуры растрового изображения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
17 18 16 20 21 22 23 24...
, и я хотел бы иметь u
и v
для любого из этих идентификаторов. Последний бит не объясняется очень хорошо, поэтому я объясню это лучше, если вы захотите.
Спасибо заранее!
Проблема, с которой я сейчас сталкиваюсь, - это идентификатор, идущий от 0 в левом нижнем углу до 15 в верхнем левом углу и так далее. – s5d
В этом случае значения, которые вы хотите для строки и столбца, вероятно: row = (16 - texNo)% 16; col = texNo/16; –