2010-11-18 25 views
2

Ich habe ein OpenGL-Programm, das Shader verwendet (OpenGL Version 3.3, GLSL Version 1.5). Ich habe gehört, dass die Shader tatsächlich auf der CPU laufen, es sei denn, Sie sagen ausdrücklich, dass sie auf der GPU laufen sollen. (Natürlich ist der ganze Grund, warum ich Shader benutze, das Rendern zu beschleunigen, indem ich die Berechnungen in der GPU statt in der CPU durchführe. Das ist also nicht das Verhalten, das ich will.) Stimmt das? Wenn ja, wie kommt der Shader auf die GPU?Shader auf der GPU ausführen

Antwort

10

Ich bin nicht sicher, wo Sie das gehört haben, aber vorausgesetzt, Sie haben halbwegs brauchbare Treiber vom Grafikhersteller, werden Ihre Shader auf der GPU laufen, ohne dass Sie etwas tun, sondern sie laden und benutzen.

+1

+1 Als ein Hinweis, obwohl einige Funktionen auf sogar modernen Karten OpenGL dazu bringen, den Shader im Software-Modus auszuwerten, was zu einer ziemlich schrecklichen Leistung führt ('GL_LINE_SMOOTH' ist ein klassisches Beispiel). –

+0

Der OpenGL-Stack von Mac OS X kann auf die CPU zurückgreifen (wenn etwas völlig daneben geht). – Stringer

+0

Unterstützt OSX [gleichmäßige Unterstützung] (http://developer.apple.com/graphicsimaging/opengl/capabilities/) 3.3? – genpfault

2

Ich bin ziemlich sicher, dass der Treiber immer versucht, jeden Shader auf GPU nicht auf der CPU laufen zu lassen. Aber nicht alle modernen Grafikkarten unterstützen den vollen Funktionsumfang von Shader-Operationen. Zum Beispiel kann die OpenGL 4.0-Erweiterung GL_ARB_gpu_shader_fp64, wie ich weiß, in Teilunterstützung verfügbar sein. Daher muss der Treiber einige Operationen im Softwaremodus auf der CPU emulieren. Wie bei Erweiterungen können Sie Ihre Karte überprüfen, indem Sie glGetString mit Parameter GL_EXTENSIONS aufrufen.

Verwandte Themen