Я новичок в 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
и 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
для любого из этихидентификаторы.Последний бит не очень хорошо объяснен, поэтому я объясню лучше, если хотите.
Заранее спасибо!