2010-10-23 61 views
2

在一個程序中同時使用OpenGL和OpenCL是否可行?兩者都在GPU上運行,恐怕OpenCL和OpenGL之間的切換是在「背景」中處理的(例如,寄存器被覆蓋)。將OpenCL與OpenGL混合

我正在使用Linux與一些nVidia圖形8k在計算機上工作,所以我可以使用在CUDA頂部實現的OpenCL。

回答

2

「可以同時使用OpenG在一個程序中使用OpenCL?兩者都在GPU上運行,恐怕OpenCL和OpenGL之間的切換是在「後臺」處理的。

不用擔心太多,你可以創建一個上下文,這個上下文將被這兩個API共享,你也可以創建來自OpenGL緩衝區的OpenCL緩衝區,因此API之間的數據傳輸沒有開銷。請繼續工作,並告知我們互操作性的優勢。計算將由內核渲染完成,由OpenGL完成。

我提供了一些可能對您有所幫助的鏈接。

http://www.dyn-lab.com/articles/cl-gl.html

http://enja.org/2010/08/27/adventures-in-opencl-part-2-particles-with-opengl/

http://www.cmsoft.com.br/index.php?option=com_content&view=category&layout=blog&id=99&Itemid=150

http://www.cmsoft.com.br/index.php?option=com_content&view=category&layout=blog&id=140&Itemid=199

OpenCL research/ academic papers

http://rastergrid.com/blog/category/programming/graphics/

http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=245351

最好的問候 Megharaj。

1

是的,沒關係,你甚至可以在OpenCL和OpenGL之間共享數據。

+0

哪裏可以閱讀關於在兩種解決方案之間共享數據的細節? – Goofy 2010-10-23 20:48:45

+1

請參閱CL規範的附錄關於從GL buffersn創建CL緩衝區並查看CL_KHR_gl_sharing擴展。 – 2010-10-24 04:29:50

1

是的,你可以

的OpenCL 1.1包括顯著的新功能包括::

通過OpenCL的事件對象鏈接到OpenGL的柵欄同步通過圖像和緩衝區的高效共享改進OpenGL的互操作性對象

http://www.khronos.org/opencl/

+3

有一點需要注意(而且實際上我絆倒了)是你必須從你的OpenGL上下文中獲得OpenCL上下文...否則對象共享將無法工作。 – fho 2010-10-27 12:08:18

+0

@Florian:最重要的評論! (...也是CL/GL互操作性最令人討厭的功能)。 – Damon 2012-03-29 11:21:27