Seite 1 von 1

Problem mit QGLWidget und Ubuntu 7.10

Verfasst: 6. Januar 2008 14:08
von Blafasel
Hallo,

ich habe angefangen, mich mal an dem QGLWidget zu probieren, und prinzipiell funktioniert es auch schon, dass von meinem unten stehenden Beispielcode ein rotes Dreieck gezeichnet wird. Allerdings scheint mir, dass es ein Problem mit dem Neuzeichnen gibt bzw. das Widget zu selten oder nicht richtig wiedergezeichnet wird. So flackert nach dem Erzeugen des Widgets zwar das Dreieck kurz auf, allerdings wird das Widget anschließend komplett schwarz oder auch mit viel "Müll" neugezeichnet. Auch macht das Widget Änderungen der Fenstergröße nicht mit: Es bleibt immer gleich groß und nach einem kurzen Flackern ist es wieder schwarz.

Die Sache verhält sich besser, wenn ich z.B. bei Mausbewegungen durch updateGL() ein Neuzeichnen erzwinge. Allerdings ist das ja nicht Sinn der Sache, oder? Ähnlich verhält es sich übrigens auch mit den OpenGL-
Beispielprogrammen, die bei QT dabei sind.

Code: Alles auswählen

void GLWidget::initializeGL()
{
  glClearColor(0.0, 0.0, 0.0, 0.0);
  glShadeModel(GL_FLAT);
  glEnable(GL_DEPTH_TEST);
  glEnable(GL_CULL_FACE);
}

void GLWidget::paintGL()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glLoadIdentity();

  glColor3d(1.0, 0.0, 0.0);
  glBegin(GL_TRIANGLES);
    glVertex3d( 0.0,  1.0, 0.0);
    glVertex3d(-1.0, -1.0, 0.0);
    glVertex3d( 1.0, -1.0, 0.0);
  glEnd();
}

void GLWidget::resizeGL(int width, int height)
{
  glViewport(0, 0, width, height);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  glMatrixMode(GL_MODELVIEW);
}
Meine Vermutung ist, dass es irgendwie ein Problem mit dem 3D-Desktop sein könnte, der bei mir unter Ubuntu 7.10 (Gutsy Gibbon) läuft.

Ich bin für jeden Tipp oder Hinweise auf irgendwelche Fehler in meinem Code dankbar!

Viele Grüße, Blafasel

Verfasst: 7. Januar 2008 21:32
von ObeliX
bei mir funzt dein code. hab auch die 7.10 - aber ohne 3D-desktop.


MfG Obel

Verfasst: 8. Januar 2008 00:07
von Blafasel
Hallo ObeliX,

vielen Dank fürs Ausprobieren! Ich hab jetzt auch mal den 3D-Desktop deaktiviert und dann funktioniert tatsächlich alles bestens. Das wäre also wirklich ein gangbarer Workaround, um doch ein bißchen mit dem QGLWidget rumspielen zu können. Dankeschön!

Allerdings sollte es an sich schon auch mit dem 3D-Desktop laufen, aber das scheint wohl tatsächlich kein triviales Problem zu sein - wobei sich hier auch die Frage stellt, ob das Problem bei QT oder dem Desktop liegt. :(

Viele Grüße

Blafasel

Verfasst: 8. Januar 2008 07:36
von CaptnChaos
Das ist ein allgemeines Problem mit dem 3D Desktop. Du kannst auch andere OGL Anwendungen nicht mehr vernünftig ausführen.
Vllt könntest du es auch mit einem Timer versuchen, der das Widget in bestimmten Abständen neu zeichnet.

Verfasst: 8. Januar 2008 10:18
von Blafasel
Hallo KernelPanic,

vielen Dank für Deine Antwort, so etwas habe ich schon befürchtet. Dann bleibt wohl erst einmal keine vernünftige Alternative, als die 3D-Effekte zu deaktivieren.

Viele Grüße

Blafasel