你如何在GLSL着色器中引用參考?您可以在GLSL着色器中通過引用傳遞矩陣嗎?
回答
你可以標記爲inout
在函數簽名的屬性,這將使該屬性有效
例如「按引用傳遞」,
void doSomething(vec3 trans, inout mat4 mat)
這裏mat
是「按引用傳遞」 ,trans
是按值傳遞的。
mat
必須是可寫的(即沒有一個統一的屬性)
是否可以在複合類型的元素/ swizzles上使用'inout'?例如'void swap(inout float a,inout float b); vec3 foo,bar; swap(foo.x,bar.x)' – AkiRoss
這是一個謊言。 「inout」函數參數限定符會導致數據的兩個「深度拷貝」。閱讀文檔。 https://www.opengl.org/wiki/Core_Language_(GLSL)#Functions 正如我所看到的,只有一種方法可以在glsl中獲得真正的「引用」,並且這是由此擴展所允許的: https:/ /www.opengl.org/registry/specs/NV/shader_buffer_load.txt – Crabonog
對於任何人在未來遇到這個答案,**這是完全錯誤**。 GLSL不允許您控制函數參數如何在「引擎蓋下」傳遞。相反,編譯器決定**所有**,並且(希望)通常不會實際複製東西。有關更多詳細信息,請參閱[此答案](https://stackoverflow.com/a/28577878)。 – user69513
- 1. GLSL通過矩陣
- 2. 在glsl着色器中訪問作爲紋理的矩陣
- 3. GLSL將着色的法線傳遞給着色器
- 4. glsl通過幾何着色器問題
- 5. GLSL着色器可以應用於SDL_Textures嗎?
- 6. 稍後可以重用glsl頂點着色器輸出嗎?
- 7. GLSL着色器
- 8. GLM :: VEC3陣列通過着色器-OpenGL -GLSL
- 9. 你可以在Java中通過引用傳遞嗎?
- 10. 您可以通過Shopify中的網址傳遞值嗎?
- 11. OpenGL,發送矩陣到頂點着色器並顯示GLSL
- 12. GLSL幾何着色器和投影矩陣
- 13. 通用GLSL照明着色器
- 14. 將OpenGL着色器的uBLAS矩陣傳遞給我
- 15. Systemverilog中的事件可以通過引用傳遞嗎?
- 16. 我可以完全跳過ShaderLab着色器的通過嗎?
- 17. 使用GLSL着色器SDL2
- 18. 通過HLSL中的像素着色器傳遞顏色
- 19. 如何編寫通用GLSL着色器來着色對象
- 20. 對象可以通過值而不是通過Java中的引用傳遞嗎?
- 21. GLSL直通幾何着色器
- 22. C++通過引用傳遞 - 可以這樣做嗎?
- 23. 我可以通過引用傳遞一個對象嗎
- 24. 我可以通過引用傳遞一個鎖對象嗎?
- 25. 通過引用傳遞參數時,可以放置「&」符號嗎?
- 26. 可以通過引用傳遞函數對象嗎?
- 27. 我可以通過引用來傳遞va_start()嗎?
- 28. GLSL着色器可選屬性
- 29. GLSL變量不從頂點傳遞到片段着色器
- 30. 將float傳遞給GLSL着色器什麼都不做
什麼是「參照」的意思是在這裏嗎?目標是否「通過複製,以便將來更改 - 共享對象 - 會影響着色器」? – 2012-11-29 19:55:54
偉大的評論。我的意思是在C++或任何其他編程語言中的含義 - __傳遞的參數的本地副本不作出___。 – bobobobo