2011-01-06 4 views
4

Zunächst verwende ich OpenTK in einer WPF-Anwendung, aber ich denke, das ist eher eine generische OpenGL-Sache.OpenGL: Wie OpenGL eingerichtet wird, um nur auf einen FBO zu rendern, keine Ausgabe an Bildschirm/Fenster/Kontrolle?

In meiner Anwendung möchte ich 3D-Zeug zu einer Textur rendern können. Ich brauche keine Ausgabe in ein Fenster oder Steuerelement auf dem Bildschirm - ich möchte nur zu einer Hintergrundtextur rendern.

Also, wie sollte ich OpenGL einrichten, um das zu tun? Normalerweise sollte ein Grafikkontext mit einem Gerätekontext als Parameter erstellt werden. Aber in meinem Fall möchte ich nicht zu einem Gerätekontext ausgeben, und ich möchte zu einem FrameBufferObject fester Größe mit Einstellungen (zB 1024x1024, 32bpp, 32bits ZBuffer) rendern, die nicht mit dem Fenster oder der Anzeige verwandt sind.

Ich hoffe, dass jemand Erfahrung mit einem Setup hat wie diese

Antwort

3

Context Schaffung :) außerhalb des Bereichs der OpenGL API selbst ist. GL-Kontexte werden von einem Zielgrafiksystem wie Windows GDI, X11/GLX, Quartz/AGL erstellt. Jetzt gibt es ein Konzept namens PBuffers, das verwendet werden kann, um HW-beschleunigte OpenGL-Kontexte zu erzeugen, die nicht an ein Fenster gebunden sind. PBuffers sind normalerweise nur als Erweiterung zugänglich, daher benötigen Sie einen OpenGL-Kontext, um so weit zu kommen. Die Lösung besteht darin, ein Dummy-Fenster zu erstellen, das niemals auf dem Bildschirm sichtbar sein muss, mit dem ein Dummy-GL-Kontext erstellt wird, um die Erweiterung zu erhalten. Dann wird der PBuffer und ein OpenGL-Kontext für diesen erstellt.

Wenn Sie jedoch FBOs verwenden möchten, müssen Sie nicht durch den PBuffer-Rahmen springen. Das unsichtbare Dummy-Fenster mit OpenGL-Kontext erledigt dies ebenfalls, da das Render-Ziel der FBO ist.