2011-10-16 44 views
2

我有一個漂亮的老ATI HD 3400顯卡,它不支持OpenCL,所以我想知道我是否可以實際使用由ATI催化劑驅動程序提供的OpenGL庫?使用OpenGL程序時,我會使用GPU的強大功能嗎?

如果我的算法運行在glutDisplayFunc (displayFunc),那就是displayFun(),它實際上是在耗費CPU功率還是GPU功耗?

回答

3

GLUT只是一個管理特定於平臺的窗口和GL上下文創建的庫。您傳遞給glutDisplayFunc的功能僅由GLUT在您所運行平臺的適當時間和上下文中調用;它不在GPU上執行。

無法將正常編譯的代碼作爲GPU上運行的較大程序的一部分進行編譯。

但是,單獨的圖形操作在你的顯示器裏面運行func當然要在GPU上執行渲染; CPU仍然在計算要執行的圖形操作,但實際上並沒有渲染結果。每個gl函數都是一個正常的CPU函數,但它的功能是通過系統總線發送命令到您的圖形卡,然後進行實際渲染。

此外,這些操作是異步的; gl函數不會讓您的GPU在繼續執行程序之前完成操作。這很有用,因爲您的CPU和GPU都可以同時工作 - GPU繪製圖形,而CPU會計算出要繪製的圖形。另一方面,如果你確實需要另一個方向的通信 - 例如glReadPixels - 那麼CPU必須等待GPU趕上。這也是glFlushglFinish之間的差異。

+0

你的意思是隻有圖形庫函數實際上是使用GPU,其他用戶提供的代碼是運行在CPU上,對嗎? – daisy

+0

是的,確切地說。 'gl *'函數本身仍然是C函數,但它們會將系統總線上的命令發送到您的圖形卡,然後再進行渲染。 –

+0

現在我明白爲什麼OpenCL是必要的,謝謝你的細節! – daisy

相關問題