2014-01-31 38 views
4

OpenCL與GLSL統一變量的等效參數是什麼?OpenCL中相當於GLSL的統一變量

OpenCL術語中位於GPU內存中的統一變量在哪裏? 他們什麼時候從主機傳遞到GPU?

我知道答案可能取決於具體的OpenGL實現,但我不知道是否有一些規則或關於此的合理假設。

回答

5

在GLSL中,可以通過只讀方式從每個着色器階段和實例訪問制服。因此它顯示了相應OpenCl全局內存的行爲。考慮到這些值的恆定性(您無法在着色器中修改它們),它尤其等於OpenCL的__constant內存。

更多信息可以在這裏找到: http://www.opengl.org/wiki/Uniform_(GLSL) 這裏: http://www.khronos.org/registry/cl/sdk/1.2/docs/man/xhtml/constant.html

我寧願因爲優化的可能性__constant存儲解決方案。如果您的內核內存佔用空間足夠大,某些OpenCL驅動程序可能會將這些__constant值直接刷新到快速本地或專用內存。如果還沒有完成,則全局內存(包含__constant內存)的內存控制器能夠在__constant部分上更快地工作,因爲不能有來自內核代碼的更新請求。

在調用glUniformXX時,OpenGL中的制服直接被傳送。

考慮到你也能夠創建統一的緩衝區對象。這種情況下的訪問由統一的緩衝區綁定點控制。這很安靜,類似於OpenGL中的紋理處理。關於UBO使用的更多信息可以在這裏找到: http://www.lighthouse3d.com/tutorials/glsl-core-tutorial/3490-2/