OpenGL: рендеринг проблемы куба скайбокса - PullRequest
0 голосов
/ 14 ноября 2018

Я создаю Sky Box с картой куба, поэтому я использовал этот сайт для генерации сторон карты куба. Sky box generator , теперь у меня 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);

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

enter image description here

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

Sample tha is not working

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

enter image description here

1 Ответ

0 голосов
/ 14 ноября 2018

Кажется, что 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);
...