Ich bin Zeichnung mehrere Formen (z.B. Kreise), die sind kodiert, aus dem Fenster Höhe & Breite. Da das Fenster startet immer in einer bestimmten Größe, Sie sind richtig gezeichnet, aber wenn das Fenster in der Größe geändert wird, es verwirrt das Seitenverhältnis auf.
Wie kann ich zeichnen Sie die Formen richtig, unabhängig von der Größe der Fenster?
Sie definitiv nicht wollen, um die Größe der Objekte explizit abhängig von der Fenstergröße.
Wie schon von genpfault, passen Sie Ihre Projektions-matrix, wenn die Größe des Fensters ändert.
Dinge zu tun, die auf Fenster Größe:
Anpassen viewport
Anpassen scissor-Rechteck (nur, wenn Sie
GL_SCISSOR_TEST
aktiviert)Anpassen Projektions-matrix
Im Falle von legacy (fixed function pipeline) OpenGL, können Sie es auf folgende Weise:
oder
oder
(unter der Annahme, dass
left, right, bottom
undtop
alle gleich sind undratio=width/height
)glScissor()
. Siehe dieser.Wenn Sie mit so etwas wie gluPerspective() verwenden Sie einfach die Fenster-Breite/Höhe-Verhältnis:
Sollten Sie das setup irgendeine Art von Fenster-handler-Funktion, die aufgerufen wird, wenn Sie Ihre OpenGL-Fensters angepasst wird. Sie müssen kümmern sich um den Fall, wenn aspectRatio > 1, und wenn aspectRatio <= 1 separat. Andernfalls können in der geometrie fallen offscreen nach einer Bildschirm Größe ändern.
Lerne ich opengl auch. Ich Stand vor diesem problem gestern auch und ich habe nicht gefunden, die richtige Antwort. Heute habe ich das problem lösen. In meinem kleinen Programm, das Objekt ändert seine Größe, wenn die Größe des Fensters ändern oder Breite heigt. Das ist mein code (bitte, verzeihen Sie meine Fehler):
Es gibt viele Methoden, das zu tun.
Folgende Beispiel zeigt, wie mache ich es in meinen Projekten und seiner Arbeit.
Das Beispiel zeigt, wie Sie einfach ein Rechteck-box, die keine änderungen der Größe, wenn das Fenster die Größe. Sie können direkt durch kopieren und einfügen in Ihr Projekt(Bedenken Sie, dass ich ein openGl-Anfänger)