OpenGL: рендеринг проблемы куба скайбокса

Я создаю Sky Box с картой куба, поэтому я использовал этот сайт для генерации сторон карты куба. Sky box генератор, Теперь у меня есть 6 512 файлов PNG, я использовал следующий код для его рендеринга:

glGenTextures(1, &cubemapTexture);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_CUBE_MAP, cubemapTexture);
for (GLuint i = 0; i < images.size(); i++) {
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGB, images[i].width, images[i].height, 0, GL_RGB, GL_UNSIGNED_BYTE, images[i].data);
}
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_CUBE_MAP, GL_TEXTURE_WRAP_R, GL_CLAMP_TO_EDGE);
glBindTexture(GL_TEXTURE_CUBE_MAP, 0);

код работал нормально с разными изображениями, но те изображения, которые загружены с этого сайта, дают мне следующий результат

введите описание изображения здесь

это образец изображения, которое не работает:

Образец, который не работает

это образец обработанных изображений:

введите описание изображения здесь

0

Решение

Кажется, что PNG-файлы содержат альфа-канал, поэтому вы должны использовать GL_RGBA в вашем вызове glTexImage2D следующим образом:

glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_RGBA, images[i].width, images[i].height, 0, GL_RGBA , GL_UNSIGNED_BYTE, images[i].data);
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]