Ich handhabe es in meiner 2D Anwendung so, dass ich unter einer bestimmten Auflösung entwickle, es dann aber auf jeder Auflösung gleich aussehen soll. (sprich das Bild wird gestreckt oder gestaucht) Früher habe ich das immer für jedes Objekt einzeln berechnet. Jetzt suche ich nach einer Möglichkeit, das Ganze mit glScalef zu realisieren, wie mache ich das ? Ich habe alte und neue größe des Fensters.
Registriert: Mo Sep 02, 2002 15:41 Beiträge: 867 Wohnort: nahe Stuttgart
Wenn ich dein Problem richtig verstanden habe, würde ich in der Projektionsmatrix (sprich wahrscheinlich glOrtho() oder gluOrtho2D()) einfach deine Entwicklungsauflösung eintragen, dann musst du an den Objektkoordinaten gar nichts ändern.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also ich muss gestehen ich bin gerade ein bisschen konfus. Es kann daran liegen, dass mein Kaffee noch vor mir steht und ich zu müde bin.
Aber du hast 2 Möglichkeiten.
Code:
glOrtho(0, ClientWidth, ClientHeight,0,...)
Hierbei handelt es sich um eine pixelgenaue Darstellung. Die OpenGL Einheiten werden genau auf 1 Pixel gemappt. Und so sieht dein Bild auch aus.
Code:
glOrtho(0,640,480,0,...)
Hier sind die Werte für den sichtbaren Bereich im Bereich von 0..640 und 0..480. Egal wie groß das Fenster ist. Ein Quad in der Größe von 640x480 würde immer den gesammten Bildschirm bedecken.
Für dein Spiel wäre vermutlich die zweite Variante die bessere Wahl. Da du so immer den passenden Bildschirmausschnitt sehen würdest. Allerdings. Je nach Größe des Fensters stimmt das Seitenverhältniss nicht mehr. Entweder wäre alles in die Höhe oder in die Breite gezogen. Das sieht dann mitunter nicht mehr so schön aus. Aber das bekommt man mit ein bisschen rechnen und glOrtho auch in den Griff. Die Schrift hingegen (wenn ich richtig interpretiere was du benutzt) ist noch nicht für Skalierungen ausgelegt. Aber das nur mal am Rande.
Bei beiden Methoden kommst du aber ohne ein glScale aus. Also wenn das noch irgendwo enthalten ist dies bitte ein bisschen entfernen. Bzw fällt mir gerade auf. Setzt du glViewport auch auf eine feste Größe oder über die gesammte Fenstergröße (ClientBlah)? Der muss ja weiterhin über die gesammte Größe des Fensters gehen. Also mit ClientWidth und ClientHeight.
Wenn das das ist was du wolltest es aber nur nicht geht, dann stimmt irgendwas anderes nicht. Evtl. wird die Projektion zurückggesetzt oder so. Da hilft dann nur ein bisschen mehr Code.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Hmmmm. Okay. Irgendwie sagt mir der Code gerade mal so gar nichts. Allerdings frage ich mich was die Kamera da macht? Und schau mal wie es sich verhält, wenn du die Größe des Fensters veränderst. Bleibt der Bereich immer unten links? Ist er immer gleich groß? Hattest du mal nach glViewport geschaut? Also wie das gesetzt wird. So aktuell kann ich für meinen Teil nur raten. Und da habe ich ehrlich keine große Lust zu.
Mitglieder in diesem Forum: 0 Mitglieder und 10 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.