Подтвердить что ты не робот

Какова функция 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.

4b9b3361

Ответ 1

Если я представляю себе, что GL_TEXTURE_2D - это рамка изображения, нависшая на стене, а textureId - реальное изображение,

На самом деле очень хорошая аналогия:)

Итак, что GL_TEXTURE0 и glActiveTexture?

Подумайте о стене с несколькими кадрами кадров, первый кадр будет помечен GL_TEXTURE0, второй GL_TEXTURE1 и т.д.

Ответ 2

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