Какова функция glActiveTexture и GL_TEXTURE0 в OpenGL?
Я нахожу способ понять, почему требуется glActiveTexture
. У меня есть код ниже:
glGenTextures(1, &textureId);
glBindTexture(GL_TEXTURE_2D, textureId);
Если я полагаю, что GL_TEXTURE_2D
- это рамка изображения, висящая на стене, а textureId
- реальное изображение, glBindTexture
- единственная команда для назначения реального кадра в кадр, так что каковы GL_TEXTURE0
и glActiveTexture
?
Будет ли мой код ниже работать нормально?
glActiveTexture(GL_TEXTURE0);
glGenTextures(1, &textureId);
glBindTexture(GL_TEXTURE_2D, textureId);
glActiveTexture(GL_TEXTURE1);
glTexImage2D(GL_TEXTURE_2D, .....)
glTexParameteri(GL_TEXTURE_2D, ...)
В настоящее время я работаю с OpenGL2.1.
Ответы
Ответ 1
Если я представляю себе, что GL_TEXTURE_2D - это рамка изображения, нависшая на стене, а textureId - реальное изображение,
На самом деле очень хорошая аналогия:)
Итак, что GL_TEXTURE0 и glActiveTexture?
Подумайте о стене с несколькими кадрами кадров, первый кадр будет помечен GL_TEXTURE0, второй GL_TEXTURE1 и т.д.
Ответ 2
OpenGL в какой-то момент вводил мультитекстурирование (которое в основном использует более одной текстуры на одном проходе геометрии); чтобы сохранить более старый код, они не могут просто добавить дополнительный параметр ко всем функциям. Вот почему вы должны явно указать, какой текстурный блок вы адресуете.