【发布时间】:2019-02-22 22:29:13
【问题描述】:
当纹理 (2D) 作为“统一”输入提供给着色器时,首先使用 glTexImage2D() 将其上传到 OpenGL,然后使用 glUniform1i() 将其与着色器统一相关联。
例如代码:
纹理数据
glTexImage2D(): 用于将纹理数据传输到服务器端。
glGetUniformLocation(): 用于访问着色器统一句柄。
glUniform1i():将纹理单元指向的数据关联到着色器“统一”输入。
但是当我们将矩阵(例如matrix4x4)作为“统一”输入传递给着色器时,不要使用任何特定函数将其上传到OpenGL。我们只是使用 glUniform..() 将数据与着色器输入相关联,在关联 OpenGL 内存中已经存在的纹理数据时也使用了该着色器输入。
矩阵数据
glGetUniformLocation(): 访问着色器统一句柄
glUniformMatrix4fv(): 将矩阵数据关联到着色器统一输入。
在将矩阵数据作为统一输入传递给着色器的每个步骤中,矩阵数据位于何处?
矩阵数据是否总是存在于客户端/CPU 可访问内存中并由服务器端每帧获取?
-
如果上传到OpenGL:
哪个步骤/函数调用上传数据?
数据在 OpenGL 内存中的什么位置?
它的内存位置是如何指向的?
【问题讨论】:
-
GPU默认uniform块数据存储中uniform变量“life”的值。
标签: opengl