OpenGL Cube Map - разные результаты для freeimage и lib изображений - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь понять кубические карты. Я прочитал следующий учебник: https://learnopengl.com/Advanced-OpenGL/Cubemaps Мой пример программы очень похож на учебник, но я использую freeimage для загрузки текстур. Моя кубическая карта имеет инвертированный вид y для каждого лица. Когда я изменяю библиотеку текстур с изображения stb на freeimage в учебной программе, я также получаю инвертированный вид y для каждого лица. Использует ли freeimage какое-то нестандартное соглашение? Почему я получаю разные результаты?

1 Ответ

0 голосов
/ 30 сентября 2019

Я не знаю, существует ли для этого стандарт, но я бы не сказал, что FreeImage отражает изображение по вертикали, это просто способ хранения данных пикселей. Если вы хотите прочитать данные с текстурой, сгенерированной OpenGL, вы можете перевернуть изображения по коду, используя FreeImage_FlipVertical до FreeImage_GetBits. Я предполагаю, что вы используете FreeImage_GetBits для доставки данных в текстуру, сгенерированную в OpenGL, если вы читаете изображение с помощью линий сканирования, вы можете загрузить данные снизу вверх.

Heads-up: ЕслиВы используете несколько форматов изображений. Вероятно, у вас есть и другие проблемы, связанные с хранением данных, поэтому просто сообщите, что при использовании GetBits и GetScanLine в официальной документации FreeImage говорится: «Вы должны правильно интерпретировать эти байты, согласно результатам FreeImage_GetBPP, FreeImage_GetRedMask, FreeImage_GetGreenMask и FreeImage_GetBlueMask ", поэтому, если у вас есть другие проблемы с загрузкой изображения в OpenGL, вы можете проверить примеры здесьдля интерпретации данных: http://freeimage.sourceforge.net/documentation.html

...