Hi zusammen
ich erzeuge einen Screenshot eines OpenGL Fensters. Das ganze funktioniert auch wunderbar. Aber:
Wenn ich auf das File Menu klicke, öffnet sich dieses und verdeckt somit einen Teil des OpenGL Fensters. Wenn man nun auf Screenshot klickt , wird der Inhalt des OpenGL Fensters abgegriffen ... aber leider wird die verdeckte Fläche mit abgegriffen .. und erscheint als graues Feld auf dem letztendlichen Screenshot !
Hat jemand eine Idee wie man das beseitigt ?
Funktion zur Screenshoterstellung:
QDesktopWidget* desktop = QApplication::desktop();
QWidget* w = viewport2; //nur OpenGL Fenster
QPixmap snapshot = QPixmap::grabWindow(w->winId(), 0, 0, -1, -1);
PS: Der schwarze Bereich ist völlig normal, den habe ich so eingefärbt. Es geht mir um den grauen Bereich.
Vielen Dank für Hilfe
REsultat:
OpenGL Bild als Screenshot ausgeben
OpenGL Bild als Screenshot ausgeben
- Dateianhänge
-
- screenshot.png (4.27 KiB) 3598 mal betrachtet
-
John Darius
- Beiträge: 8
- Registriert: 20. April 2009 18:18
Hallo Klausen
Versuch den Screenshot mal mit
zu machen, klappt bei mir einwandfrei.
Versuch den Screenshot mal mit
Code: Alles auswählen
QImage image = glWidget->grabFrameBuffer();
LG: Günter W.
Den Framebuffer zu grabben ist vermutlich das beste, da das recht fix ist.
Was du aber auch machen kannst ist renderPixmap(...), da wird zwar die Szene komplett neu gerendert, das sollte aber bei interaktiven Sachen eh nur nen Sekundenbruchteil dauern, und so kannst du angeben wie groß der Screenshot sein soll (es ist also nicht wirklich ein Screenshot in dem Sinne, sondern die Szene wird halt komplett neu in eine QPixmap beliebiger größe gerendert).
Was du aber auch machen kannst ist renderPixmap(...), da wird zwar die Szene komplett neu gerendert, das sollte aber bei interaktiven Sachen eh nur nen Sekundenbruchteil dauern, und so kannst du angeben wie groß der Screenshot sein soll (es ist also nicht wirklich ein Screenshot in dem Sinne, sondern die Szene wird halt komplett neu in eine QPixmap beliebiger größe gerendert).