OpenGL Widget wird grau wenn aus Bildschirm heraus bewegt

Alles rund um die Programmierung mit Qt
Antworten
BananaJoe
Beiträge: 1
Registriert: 23. Oktober 2007 18:00

OpenGL Widget wird grau wenn aus Bildschirm heraus bewegt

Beitrag 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
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Sephral
Beiträge: 201
Registriert: 1. Februar 2006 09:40
Kontaktdaten:

Beitrag 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
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag 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.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Antworten