Seite 1 von 1

OpenGL Widget wird grau wenn aus Bildschirm heraus bewegt

Verfasst: 23. Oktober 2007 18:25
von BananaJoe
Hallo Leute.

Ich habe gestern mein erstes OpenGL Programm zum laufen gebracht. Wie in der offiziellen Qt Dokumentation (auf doc.trolltech.com) empfohlen, verwende ich ein QPainter Objekt zum Zeichnen (da 2D).

[Bitte jetzt nicht fragen warum der hier OpenGL für 2D nimmt, danke ;-)]

Was mir aber aufgefallen ist, ist folgendes:
Wenn das Programm läuft (es ist ein Fenster mit nur einem von der QGLWidget Klasse abgeleitetem Widget) so wird der Inhalt des Fenster grau wenn das Fenster außerhalb des Bildschirms bewegt wird. Es ist aber nicht vollständig grau, sonder hat irgendwie teilweise noch fragmentartig am Rand den ursprünglichen Inhalt (ich habe es einfach schwarz gefüllt).

Mein Code dazu ist folgender:

void MyGLDrawer::paintEvent(QPaintEvent *event)
{
QPainter painter;
painter.begin(this);
painter.fillRect(event->rect(), background); // "clear" the window with the background QBrush
painter.end();
}

Und meine Frage ist folgende:

Kann man irgendwie erreichen, dass der Inhalt meines Fensters nicht "zerstört" wird sobald es außerhalb des Bildschirmrandes bewegt wird?

Um es besser nachvollziehen zu können habe ich ein Bild erstellt und hochgeladen:
http://img75.imageshack.us/img75/9659/o ... robcx4.png

Verfasst: 26. Oktober 2007 11:11
von macman
Problem inzwischen gelöst? Ist ja doch ein paar Tage her. Ich habe mit OpenGL und 2D noch nie was gemacht, aber bei OpenGL und 3D kommt die Zeichenroutine in paintGL() und nicht ins paintEvent.

Verfasst: 26. Oktober 2007 12:48
von Sephral
Hm, irgendwie klingt das für mich nach einem dieser fiesen "Overlay"-Probleme. Hast du das Overlay-Example von Qt verwendet?

Wenn man Overlays verwendet, spielt die Grafikkarte eine nicht unwichtige Rolle. Eine Darstellung auf Overlay-Basis funktioniert oft nur auf dem 1. Monitor eines Rechners. Es gibt aber die Möglichkeit den Mehrschirm-Betrieb der Grafikkarte auf einen "Stretched"-Modus umzustellen (Herstellerspezifisch), dann klappt es auch auf weiteren Screens.


Ciao,
Sephral

Verfasst: 26. Oktober 2007 14:07
von macman
Ich habe mir das GLBox-Example von Qt angeschaut und praktisch darauf aufgebaut. Ist aber auch ein ganz anderer Ansatz, da es um 3D-Modelle geht.