我的问题是这个。此功能的用处是什么?我知道我得到一个统一变量的值,但这有什么用?例:

我分配一个的值
来自我的C / C ++程序的统一变量。

    Program  -> glUniform*(...);  -> Shader -> glGetUniform*(...)


使用glGetUniform可以获取此变量或任何其他变量的值,但可以是uniform ... ...因为我可以直接从我的应用程序中获取该值,并且由于我不能直接在着色器中将值赋给uniform变量,所以这样做的用处是什么特征?

    Program  -> glUniform*(...);  -> Shader -> glGetUniform*(...)
       |
       V
  uniform value

最佳答案

glGet*()函数的主要用途是调试。您几乎永远都不想在实际的渲染呈现代码中使用它们,因为它要求GL驱动程序在返回值之前先完成所有待处理的操作,以确保该值正确。这意味着仅缓存您关心的客户端状态会更快。

09-08 10:09