Seite 1 von 1

Problem mit SimpleOpenGlControl und Resizing

Verfasst: Mo Apr 05, 2010 7:53 pm
von cloidnerux
Also ich will mit Tao und deren Implementation etwas mit OpenGl zeichnen.
Das Funktiniert auch alles Wunderbar, nur in einigen Fällen, wenn man das Fenster Vergrößert wird nicht der Resize-Handler aufgerufen doer er macht nicht das was er soll. Es ist mir bisher nur passiert, das es nicht richitg Funktionierte, wenn man das Fenster auf Fullscreen schaltet. Die zu Grunde liegende SimpleOpenGlCOntrol hat Dock auf Fill, also wird sie definitv vergrößert.
Hier der Event-handler Code:

Code: Alles auswählen

        private void renderContext_Resize(object sender, EventArgs e)
        {
            vertikalStretch = (float)renderContext.Height / (float)startUpWindowHeight;
            horizontalStretch = (float)renderContext.Width / (float)startUpWindowWidth;
            Resize(renderContext.Height, renderContext.Width);
        }
        private void Resize(int height, int width)
        {
            Gl.glViewport(0, 0, width, height);
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            const float nRange = 80.0f;
            if (height == 0)
            {
                height = 1;
            }
            Gl.glOrtho(-nRange * width / height,
                nRange * width / height,
                -nRange, nRange, -1.0, 1.0);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
        }
Sprache ist C#, vertikalStretch und horizontalStretch dienen nur dazu, Maus-koordinaten korrekt umzurechnen.

Danke für Hilfe.
MfG cloidnerux.

Re: Problem mit SimpleOpenGlControl und Resizing

Verfasst: Mo Apr 05, 2010 8:30 pm
von Xin
cloidnerux hat geschrieben:Das Funktiniert auch alles Wunderbar, nur in einigen Fällen, wenn man das Fenster Vergrößert wird nicht der Resize-Handler aufgerufen doer er macht nicht das was er soll.
Was heißt das?
Wird er gerufen oder nicht? Setz doch mal einen Breakpoint rein!?

Re: Problem mit SimpleOpenGlControl und Resizing

Verfasst: Mo Apr 05, 2010 8:59 pm
von cloidnerux
Wird er gerufen oder nicht? Setz doch mal einen Breakpoint rein!?
Gerade versucht: er wird aufgerufen!
Anscheinend arbeitet die Resize Methode nicht richtig.
Wenn ich das Fenster vergrößer, dann bleibt die Ursprüngliche größe für den OpenGl Render Context. Wenn ich das Fenster dann aber über die Maus in der größe Veränder, dann funktioniert es wieder.

Re: Problem mit SimpleOpenGlControl und Resizing

Verfasst: Mo Apr 05, 2010 10:05 pm
von Xin
cloidnerux hat geschrieben:
Wird er gerufen oder nicht? Setz doch mal einen Breakpoint rein!?
Gerade versucht: er wird aufgerufen!
Anscheinend arbeitet die Resize Methode nicht richtig.
Wenn ich das Fenster vergrößer, dann bleibt die Ursprüngliche größe für den OpenGl Render Context. Wenn ich das Fenster dann aber über die Maus in der größe Veränder, dann funktioniert es wieder.
Also funktioniert das Resize nur beim Verkleinern?

Re: Problem mit SimpleOpenGlControl und Resizing

Verfasst: Mo Apr 05, 2010 11:05 pm
von cloidnerux
Also funktioniert das Resize nur beim Verkleinern?
Nein, sondern nur Sporadisch. Das ist auch gerade mein Problem, dass ich nämlich den Fehler schlecht reproduzieren kann.
Er tritt nur manchmal auf, bisher nur, wenn ich das Fenster über den Fullscreen Button des Systems vergrößer, aber selbst das nicht immer.
Wenn ich die SimpleOpenGLControl z.B in ein SplitContainer packe und die größe ändere Funktioniert alles wunderbar.
Ich werde mal ne Nacht darüber schlafen, dann wird mir sicherlich was einfallen, denn wer sucht, der findet.

MfG cloidnerux.

Re: Problem mit SimpleOpenGlControl und Resizing

Verfasst: Di Apr 06, 2010 9:36 am
von Xin
cloidnerux hat geschrieben:
Also funktioniert das Resize nur beim Verkleinern?
Nein, sondern nur Sporadisch. Das ist auch gerade mein Problem, dass ich nämlich den Fehler schlecht reproduzieren kann.
Er tritt nur manchmal auf, bisher nur, wenn ich das Fenster über den Fullscreen Button des Systems vergrößer, aber selbst das nicht immer.
Kann es sein, dass MaxSize oder MinSize Dir in die Quere kommen?

Re: Problem mit SimpleOpenGlControl und Resizing

Verfasst: Di Apr 20, 2010 4:39 pm
von cloidnerux
Kann es sein, dass MaxSize oder MinSize Dir in die Quere kommen?
Nein, der Fehler tritt nur Sporadisch auf.
Ich habe den Fehler im Moment "unterdrückt":
Ich hatte für ein Programm eine zweite GUI gebastelt, die ich zum Vergleich über die erste aufgerufen habe. Meistens trat der Fehler dann auf, wenn ich die zusätzliche GUI zum zweiten(n-ten) mal aufgerufen habe.
Da ich diese Oberfläche aber nun direkt beim Starten Aufrufe, hat es sich erledigt.
Anscheinend hängt es auch mit dem Dock-Container den ich dort verwende zusammen(http://www.codeproject.com/KB/toolbars/ ... ainer.aspx) aber da es mir nicht wirklich möglich war die Fehlerquelle ausfindig zu machen, lasse ich ihn außen vor und Kümmer mich bei gelegenheit oder bedarf darum.