OpenGL Bild als Screenshot ausgeben

Alles rund um die Programmierung mit Qt
Antworten
Klausn
Beiträge: 48
Registriert: 28. Januar 2009 10:40

OpenGL Bild als Screenshot ausgeben

Beitrag von Klausn »

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:
Dateianhänge
screenshot.png
screenshot.png (4.27 KiB) 3590 mal betrachtet
John Darius
Beiträge: 8
Registriert: 20. April 2009 18:18

Beitrag von John Darius »

Hallo Klausen

Versuch den Screenshot mal mit

Code: Alles auswählen

QImage image = glWidget->grabFrameBuffer();
zu machen, klappt bei mir einwandfrei.
LG: Günter W.
N¤X
Beiträge: 77
Registriert: 21. September 2009 12:24

Beitrag von N¤X »

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).
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Was wäre wenn du nen GrabWidget machst statt das Window?
Klausn
Beiträge: 48
Registriert: 28. Januar 2009 10:40

Beitrag von Klausn »

hi danke für die antworten ...

immer wenn ich den Framebuffer grabben will, kommt am ende ein graues oder schwarzes Bild in der Größe der Hauptanwendung raus. Das heisst also, das die Größe des Fenster richtig übergeben wird, aber der Inhalt nicht richtig gerendert wird.
Antworten