Получение атласа блоков

Версия Minecraft
1.10+
355
2
17
Насколько я понимаю, для оптимизации получении текстур, игра генерирует атлас всех блоков (Как это было в ранних версиях, в одном файле).
Java:
TextureMap.LOCATION_BLOCKS_TEXTURE = new ResourceLocation("textures/atlas/blocks.png");
Вручную найти этот файл не получилось, видимо он где-то в память генерируется но где именно лежит я так и не понял.

Суть вопроса, как можно получить этот файл? Куда ссылаться чтобы получить его стрим и записать в файл? Дабы посмотреть что из себя представляет и дебажить добавления новых спрайтов.
 
Решение
Проще всего забиндить текстуру атласа (через mc.renderEngine.bindTexture(resourceLocation)) и вызвать glReadPixels.
Taking Screen Shots - LWJGL
Что-то вроде такого, только ширина и высота должны соответствовать разрешению текстуры, чтобы их узнать - надо вызвать
Java:
int width = glGetTexLevelParameteri(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH);
int height = glGetTexLevelParameteri(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT);
И скорее всего строка из тутора должна быть такая:
Java:
GL11.glReadPixels(0, 0, width, height, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, buffer );
Есть метод регистрации новых спрайтов.
Можешь туда добавить хук и делать свои манипуляции.
По поводу посмотреть - попробуй просто гуи сделать с этой текстуры.
По поводу сохранить - хЗ, но вроде были методы получения image по пути.
 
Проще всего забиндить текстуру атласа (через mc.renderEngine.bindTexture(resourceLocation)) и вызвать glReadPixels.
Taking Screen Shots - LWJGL
Что-то вроде такого, только ширина и высота должны соответствовать разрешению текстуры, чтобы их узнать - надо вызвать
Java:
int width = glGetTexLevelParameteri(GL_TEXTURE_2D, 0, GL_TEXTURE_WIDTH);
int height = glGetTexLevelParameteri(GL_TEXTURE_2D, 0, GL_TEXTURE_HEIGHT);
И скорее всего строка из тутора должна быть такая:
Java:
GL11.glReadPixels(0, 0, width, height, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, buffer );
 
Последнее редактирование:
Получилось. (P.S. А есть еще какой-то вариант, чтобы подгрузить этот ресурс в буффер opengl, а не накладывать в gui и затем скринить этим методом? Чтобы это можно было сделать на этапе загрузки допустим, а то если делать это на этапе загрузки, оно будет выдавать черные текстуры).

Странно как-то, вот так выглядит обычный atlas:
atlas-original.png


А вот так с добавлением кастомной текстурки ( скина, размером 64х64 ) :
atlas.png


Получается так, что оно сдвигает положение спрайтов, из-за чего ломаются текстурки:
2018-10-26_06.46.39.png


Может в курсе, как тогда накладывать на json модели кастомные текстуры, других размеров? Только разве что свой атлас создавать что ли, или есть какое-то автосмещение позиционки блоков?
 
Последнее редактирование:
Назад
Сверху