Как GLKTextureLoader загружает куб-карту из графической полосы?

Есть ли способ загрузить куб-карту с помощью гигантской полосы изображений в OpenGL-ES? (или настольный GL или расширение, что угодно)

Например, GLKTextureLoader Класс предлагает загружать кубическую карту сразу, если они расположены вертикально. Я хочу знать, что есть некоторые функции GL для этой функции, или класс просто разделяет текстуры при загрузке. Конечно, я могу использовать этот класс, но я хочу знать, какой из них более эффективен при загрузке длинных условных изображений или отдельных 6 изображений для каждой стороны.

1 ответ

Я предполагаю, что эта функция действительно просто разделяет изображение на 6 наборов граней после загрузки файла изображения, а затем использует их для генерации стандартной карты куба с помощью стандартных вызовов кубической карты:

glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X...)
glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_Y...)
etc

Обратите внимание, что класс GLKTextureLoader также определяет cubeMapWithContentsOfFiles, который позволяет вам указать 6 отдельных файлов изображений для определения текстур лица.

Вы можете проверить время, необходимое для настройки кубической карты, используя ввод 6-файлов по сравнению с вводом полосы куба (cubeMapWithContentsOfFile). То, что выполняется быстрее, будет зависеть от того, будет ли загрузка 6 файлов быстрее, чем загрузка одного большого файла и разделение метода методом. В противном случае, я уверен, что весь остальной код между двумя функциями идентичен и использует стандартные вызовы текстуры кубической карты, как указано выше.

Поскольку GLKit является собственностью Apple, мы не можем просто посмотреть на исходный код, как в большинстве функций OpenGl.

Другие вопросы по тегам