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. java全局全局變量和用戶全局變量
- 2. 全局變量
- 3. 全局變量。
- 4. 全局變量
- 5. 全局變量
- 6. 全局變量
- 7. 全局變量
- 8. 全局變量
- 9. 全局變量
- 10. 全局變量
- 11. 全局變量
- 12. 全局變量
- 13. 全局變量
- 14. 全局變量
- 15. 全局變量
- 16. 全局變量
- 17. 全局變量
- 18. 全局變量?
- 19. 全局變量
- 20. 變量全局變量?
- 21. JS全局變量到局部變量
- 22. PowerShell全局變量局部變量
- 23. 局部變量與全局變量
- 24. 局部變量的全局變量
- 25. R:局部/全局變量
- 26. 全局和局部變量
- 27. 全局和局部變量
- 28. [R局部全局變量
- 29. 全局變量vb.net
- 30. Codeigniter全局變量
但是那麼如果program2想訪問foo呢? – 2012-01-02 03:01:04
@KevinKostlan:沒有什麼能阻止你在多個程序中使用同一套制服。只要按照上述過程爲每一個。 – 2012-01-02 03:03:09
我希望有一個相機矩陣,我可以做一次glUniformX,然後每個着色器都會有它(節省時間)。我想這不存在。 – 2012-01-02 18:53:26