Как 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.