Screenkoordinaten statt Weltkoordinaten
-
hallo,
kann ich in OpenGL z.B. ein Polygon mit Hilfe der Screenkoordinaten zeichnen. bis jetzt benutze ich ja immer glVertex3f ( Weltkoordinaten).
-
ja, z.B. du setzt dir eine orthogonale projektion die mit links=0,oben=0,rechts=bildshirmbreite,unten=bildschirmhöche (natürlich alles in pixeln) aufgebaut ist. dann kannst du mit glVertex2f an den pixelpositionen zeichnen.
rapso->greets();
-
Das Problem an der Sache ist, das ein Objekt, welches ich vorher einlese, die Angaben über das Viewingvolumen liefert z.B. größter X Wert des Objektes ist in glOrtho die linke Grenze. Somit kann ich also nicht die Bildschirmkoordinaten in glOrtho angeben und verwenden.
Ich dachte, OpenGL stellt vieleicht eine eigens dafür konstruierte Funktion zur Verfügung.
-
ich kann deiner problembeschriebung nicht folgen
wenn man die matrizen richtig einstellt kann man eins zu eins die übergebenen vertexdaten auf den screenpixeln sehen... genau das was deine anfängliche fragestellung war.
rapso->greets();
-
Ok. Ich hab mich vieleicht ein bisschen umständlich ausgedrückt. Nochmal:
1. Lese ein Objekt ein. Dieses hat x,y und z Werte.
2. Aus x,y und z Werten lege ich mittels glOrtho mein Viewingvolumen fest (Bsp.: größer x Wert in x Reihe ist meine rechte Grenze; kleinster x Wert in Reihe ist meine linke Grenze usw. ...). Das ViewingVolumen ist somit definiert.Bis zu diesem Punkt habe ich mit den Weltkoordinaten gearbeitet. Nun möchte ich einen Button (Polygon mit Textur) z.B. in die linke obere Ecke platzieren. Dazu will ich die Screenkoordinaten nutzen (obere linke Ecke: 0, 0), da ich mein Objekt Zoome und ich nicht möchte, das der Button mitgezoomt wird.
Oder kann ich es anders realisieren, das der Zoom nur auf mein Objekt wirkt?
-
wenn du dein objeckt fertig gerendert hast, setz eine neue orthogonale projektion so wie ich es oben beschrieb, dann kannst du in pixelpositionen mit glVertex2f zeichnen!, eventuell mußt du den ZBuffer-vergleich ausschalten.
as simple as it is
rapso->greets();
-
Hm so eine Frage hab ich hier auch mal gestellt, das Stichwort das Deine Probleme löst ist "transformed vertices". (zumindest in D3D, OGL wird denke ich nicht viel anderst sein )