Текстурный атлас - это большое изображение, которое содержит много изображений меньшего размера, каждое из которых является
текстурой для какой-то части объекта.
Для чего его используют?
Текстурный атлас позволяет значительно сократить употребление ресурсов компьютером.
Пример текстурного атласа со шрифтом:
Как же использовать это чудо?
И так... Если нам известен размер текстурного атласа и размер отдельного изображения в нем, то мы можем узнать текстурные координаты для нашего отдельного объекта на сцене.
Например:
Размер текстурного атласа = 256 пикселей в длину и ширину.
Размер отдельного изображения в нем (Квадрат в котором буква A на рисунке сверху) = 32 пикселей в ширину и длину.
Тогда для того, чтобы найти текстурные координаты, нужно размер отдельного изображения поделить на размер атласа.
32 / 256 = 0.125. ==>
Код
float varX = 0.125F.
float varY = 0.0F;
GL11.glEnable(GL11.GL_TEXTURE_2D); // Включение 2D текстур.
GL11.glBindTexture(GL11.GL_TEXTURE_2D, TextureMap.getTextureID()); // Крепление текстуры на квадрат.
GL11.glBegin(GL11.GL_QUADS); // Мы рисуем квадрат.
GL11.glTexCoord2f(varX, varY); // Текстурные координаты.
GL11.glVertex2f(0.0F, 0.0F); // Это вершина x, y.
GL11.glTexCoord2f(varX + 0.125F, varY); // Текстурные координаты.
GL11.glVertex2f(100.0F, 0.0F); // Это вершина x, y.
GL11.glTexCoord2f(varX + 0.125F, varY + 0.125F); // Текстурные координаты.
GL11.glVertex2f(100.0F, 100.0F); // Это вершина x, y.
GL11.glTexCoord2f(varX, varY + 0.125F); // Текстурные координаты.
GL11.glVertex2f(0.0F, 100.0F); // Это вершина x, y.
GL11.glEnd(); // Заканчиваем рисовать квадрат.
GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0); // Стираем текстуру.
GL11.glDisable(GL11.GL_TEXTURE_2D); // Отключение 2D текстуры.
После запуска программы, вы увидите "перевернутый" квадрат с текстурой серого квадрата в зеленой рамке с буквой B.
Вопрос новичков:
-А как же другие изображения в текстуре? Как их "загрузить"?
Ответ:
-Просто передвигайте координаты. Например:
varY -= 0.125F;
После опущения координаты y на 0.125F, вы увидите букву C.
Так со всеми координатами.
Я надеюсь, что вам все понятнос.
Если есть вопросы, задавайте их.