Ich muss ziemlich viele (Zehntausende) Bilder mit OpenGL außerhalb des Bildschirms rendern.
Ich bin unter Windows und mit QT als Framework ausgeführt. Die Lösung kann nur Windows sein, es spielt keine Rolle.OpenGL: Schnelle Off-Screen-Rendering
Von dem, was ich gefunden habe, die Verwendung von Google gibt es diese This article eine Reihe von Optionen zu tun, die eher vorschlagen, ein paar Möglichkeiten, datiert scheint, aus denen die relevanten sind:
- Windows spezifisch - Einsatz
CreateDIBSection
und irgendwie die Textur daran binden. - Verwenden Sie die Erweiterung pbuffers, die auf meiner Karte unterstützt wird.
This thread (Nachricht 6) deutet auf eine QT spezifische Art und Weise, dies zu tun QGLWidget::renderPixmap
Meine Frage besteht darin, - welche wäre der schnellste Weg sein? pbuffers scheint die sicherste Wette zu sein, da es garantiert auf der Hardware ausgeführt wird, aber nicht die CreateDIB-Methode verwendet, geht auch durch die Hardware? Was ist mit der QT-Methode? Es scheint ein Problem mit der Kontexterstellung zu geben. sicherlich möchte ich nicht für jedes Bild, das ich erschaffe, einen neuen Kontext schaffen.
Hat jemand eine gute Erfahrung damit?
EDIT: Die Beantwortung des Kommentars -
Ich habe eine konstante Szene, die es von vielen verschiedenen Gesichtspunkten gar nicht ändern und ich bin Rendering. Momentan gehen die Bilder zurück zum Benutzer und werden von der CPU verarbeitet. Möglicherweise werden sie in Zukunft auf der GPU verarbeitet werden.
Woher kommen die Bilder? Rendern Sie die gleiche Szene immer und immer wieder, vielleicht von verschiedenen Standpunkten aus? Oder laden Sie Textur nach Textur von der Festplatte? Und wohin gehen die Bilder? In eine GPU Berechnung? Auf die Festplatte? Ihre Antwort hängt von den Details ab. – ejgottl
in die Frage beantwortet – shoosh
Vielleicht kann diese Verbindung nützlich sein, hier habe ich Framebuffer Objekte mit 'QGLFrameBuffer' http://stackoverflow.com/questions/19934102/qglwidget-and-fast-offscreen-rendering/ – linello