2010-11-18 114 views
2

我有一個使用着色器(OpenGL版本3.3,GLSL版本1.5)的OpenGL程序。我聽說着色器實際上運行在CPU上,除非你明確地告訴它在GPU上運行。 (當然,我使用着色器的全部原因是通過在GPU而不是CPU中進行計算來加速渲染速度,所以這不是我想要的行爲。)這是真的嗎?如果是這樣,你如何讓着色器在GPU上運行?讓着色器在GPU上運行

回答

10

我不確定你聽到的是哪裏,但假設你有來自圖形供應商的半路體面驅動程序,則着色器將在GPU上運行,而無需執行任何操作,只需加載和使用它們即可。

+1

+1作爲一個說明,儘管即使是現代卡上的某些功能也會導致OpenGL在軟件模式下評估着色器,導致非常糟糕的性能('GL_LINE_SMOOTH'就是一個典型例子)。 – 2010-11-18 20:49:56

+0

Mac OS X的OpenGL堆棧可以回退到CPU(如果事情完全錯誤)。 – Stringer 2010-11-18 20:52:01

+0

OSX [偶數支持](http://developer.apple.com/graphicsimaging/opengl/capabilities/)3.3? – genpfault 2010-11-18 22:40:10

2

我很確定驅動程序總是試圖在GPU上運行每個着色器而不是CPU。但並非所有現代視頻卡都支持完整的着色器操作。例如OpenGL 4.0擴展GL_ARB_gpu_shader_fp64,據我所知可以部分支持。所以驅動程序必須在CPU上的軟件模式下模擬一些操作。至於擴展名,您可以通過使用GL_EXTENSIONS參數調用glGetString來檢查您的卡。