Когда текстура (2D) подается в шейдер в качестве «равномерного» ввода, она сначала загружается в OpenGL с помощью glTexImage2D (), а затем с помощью glUniform1i () связывается с шейдерной униформой.
например, код:
Данные текстуры
glTexImage2D()
: используется для передачи данных текстуры на сторону сервера.
glGetUniformLocation()
: используетсячтобы получить доступ к унифицированному дескриптору шейдера.
glUniform1i()
: связывает данные, указанные единицей текстуры, с «унифицированным» входом шейдера.
, но когда мы передаем матрицу (например, matrix4x4) шейдеру как«равномерный» ввод, когда не используется какая-либо конкретная функция для загрузки его в OpenGL.Мы просто использовали glUniform .. (), чтобы связать данные с входом шейдера, который мы также использовали в случае связывания текстурных данных, которые уже присутствуют в памяти OpenGL.
Матричные данные
glGetUniformLocation()
: для доступа к унифицированной ручке шейдера
glUniformMatrix4fv()
: для привязки данных матрицы к унифицированному входу шейдера.
Где хранятся данные матрицыкаждый шаг в процессе передачи его в шейдер в качестве унифицированного ввода?