Я уже получил skybox для работы, за исключением того, что он принимает шесть файлов. Я хотел бы узнать, как использовать 1 файл вместо шести. Я смотрел по всему Интернету и не могу найти ничего, что сработает. Вот функция loadCubeMap, которая помещает изображения в cubemap:Как сделать одно изображение skybox?
public int loadCubeMap(String[] textureFiles){
int texID = GL11.glGenTextures();
GL13.glActiveTexture(GL13.GL_TEXTURE0);
GL11.glBindTexture(GL13.GL_TEXTURE_CUBE_MAP, texID);
for(int i=0;i<textureFiles.length;i++){
TextureData data = decodeTextureFile("res/" + textureFiles[i] + ".png");
GL11.glTexImage2D(GL13.GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL11.GL_RGBA, data.getWidth(), data.getHeight(), 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, data.getBuffer());
}
GL11.glTexParameteri(GL13.GL_TEXTURE_CUBE_MAP, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR);
GL11.glTexParameteri(GL13.GL_TEXTURE_CUBE_MAP, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR);
textures.add(texID);
return texID;
}
Какое изображение? Вы знаете макет? Вопрос о том, как извлечь части изображения из «TextureData»? Пожалуйста, будьте более конкретными. – keltar
@keltar из кода я вижу, что его текущий файл cubemap находится в 6 png-изображениях. Я считаю, что он хочет этого в одном файле –
@ratchetfreak Я вижу это, но это может означать разные вещи. Zipping 6 pngs - 1 файл; использование формата файлов с несколькими файлами - один файл; объединение всех изображений в один 2D - тоже один файл. Если используется последний параметр, изображение может содержать разные макеты (установите все 6 в одну строку или что-то еще), и загрузчик должен это знать. – keltar