Q
GLSL全局变量
3
A
回答
4
全局变量在GLSL中不存在。 gl_*
变量是硬编码变量(将它们视为自动添加编译时间)从着色器访问流水线的非可编程元素。在核心OpenGL 3.0中,大部分已被删除,包括gl_LightSource
。现在,用户需要处理他自己的矩阵和灯光,并将它们作为制服发送给着色器。如果你想查看所有剩下的列表,你应该看看GLSL Reference Pages。
你想要的是制服。如果要在着色器之间同步校服,请存储制服的位置,并遍历所有程序以将制服上载到每个着色器。
1
OpenGL中的全局着色器变量称为“制服”。它们是只读的,可以用glUniformX
调用绑定。粗略地说,它看起来像这样(这更是一个伪代码的):
// 1. activate the program
glUseProgram(program)
// 2. get uniform location
foo = glGetUniformLocation(program, "foo")
// 3. bind the value, e.g. a single float
glUniform1f(foo, 42.0)
着色器中,您需要uniform
存储预选赛中,例如出线变量
uniform float foo;
3
您可以使用统一缓冲区。这里是一个教程:http://www.lighthouse3d.com/tutorials/glsl-tutorial/uniform-blocks/
相关问题
- 1. 全局变量
- 2. 全局变量
- 3. 全局变量?
- 4. 全局变量
- 5. 全局变量
- 6. 全局变量
- 7. 全局变量
- 8. 全局变量
- 9. 变量全局变量?
- 10. Codeigniter全局变量
- 11. 全局变量,C
- 12. Greasemonkey&全局变量
- 13. VBA全局变量
- 14. Ruby全局变量
- 15. 笨全局变量
- 16. 全局JSON变量
- 17. Rails全局变量
- 18. drupal全局变量
- 19. PHP全局变量
- 20. 全局变量jquery
- 21. 从全局变量
- 22. Android - 全局变量?
- 23. 全局EditText变量
- 24. jQuery全局变量
- 25. iPhone全局变量?
- 26. 全局变量5.3
- 27. javascript全局变量
- 28. Python全局变量__
- 29. .net全局变量
- 30. C#全局变量
但是那么如果program2想访问foo呢? – 2012-01-02 03:01:04
@KevinKostlan:没有什么能阻止你在多个程序中使用同一套制服。只要按照上述过程为每一个。 – 2012-01-02 03:03:09
我希望有一个相机矩阵,我可以做一次glUniformX,然后每个着色器都会有它(节省时间)。我想这不存在。 – 2012-01-02 18:53:26