[GELÖST] Z-Hirarchie in orthogonaler Projektion? (OpenGL)



  • Hi

    Wenn ich in orthogonaler Projektion zwei Dreiecke mit unterschiedlichen Z-Werten zeichne, ist dann das mit dem niedrigeren Z-Wert vorne oder das, dass ich zuzweit gezeichnet habe?



  • Das ist abhaengig von der Konfiguration des Z-Tests und weitestgehend unabhaengig von der Projektionsart.



  • Kleine Zwischenfrage:
    In D3D sind die z-Werte nach der Homogenen Division ja in [0,1], sprich D3D clippt alle Vertices, deren z-Werte außerhalb [0,w] liegen.

    In OGL scheinen die z-Werte nach der homog. Div. also in [-1,1] zu liegen. Clippt dann OGL die z-Werte in [-w,w]?

    Wenn ich die MVP Matrix auf die Einheitsmatrix setze, liegt dann ein Vertex mit z=0 in D3D genau auf der near plane und in OGL genau in der Mitte zwischen near und far Plane?



  • Danke hellihjb!
    @nachfrager33 Was soll das? Eröffne einen eigenen Theard...

    Kann geclosed werden!



  • X.DarkForce.X schrieb:

    Danke hellihjb!
    @nachfrager33 Was soll das? Eröffne einen eigenen Theard...

    Kann geclosed werden!

    Was bistn du für ein Hampelmann? Man kann in einem Thread ja wohl noch Fragen anhängen.

    Ob "geclosed" (Unterschicht inc) wird, bestimmt ein Mod und nicht du.



  • @nachfrager

    ne, das sind exakt die selben Werte wie auch D3D akzeptieren würde. Die Tranformation ist einfach nur so, dass ogl das Ergebnis mit 2 multipliziert und 1 abzieht. dabei geht es einfach nur darum, dass der Raum der möglichen Werte symmetrisch um den Ursprung liegt und nicht asymmetrisch wie bei D3D.

    //edit Vertipper entfernt. Zu viel Gitarre spielen reduziert offensichtlich die Tippfähigkeit



  • @otze: Dh wenn ich in OGL einen Vertex habe, der auf der Near Plane liegt mit der MVP Matrix multipliziere und dann durch w teile, dann hat der einen z-Wert von 0, genau wie in D3D?
    Falls ja: Wozu dann DANACH noch diese z Achsen Tranformation von [0,1] auf [-1,1]?



  • nachfrager schrieb:

    @otze: Dh wenn ich in OGL einen Vertex habe, der auf der Near Plane liegt mit der MVP Matrix multipliziere und dann durch w teile, dann hat der einen z-Wert von 0, genau wie in D3D?
    Falls ja: Wozu dann DANACH noch diese z Achsen Tranformation von [0,1] auf [-1,1]?

    Neijn. 0*2-1=-1



  • otze schrieb:

    nachfrager schrieb:

    @otze: Dh wenn ich in OGL einen Vertex habe, der auf der Near Plane liegt mit der MVP Matrix multipliziere und dann durch w teile, dann hat der einen z-Wert von 0, genau wie in D3D?
    Falls ja: Wozu dann DANACH noch diese z Achsen Tranformation von [0,1] auf [-1,1]?

    Neijn. 0*2-1=-1

    Wieso sagst du dann das hier:

    ne, das sind exakt die selben Werte wie auch D3D akzeptieren würde.

    Dann ist es doch eben NICHT wie in D3D!
    Offenbar muss ich also eine z-Koordinate von -1 angeben, wenn ich den Punkt auf der Near Plane haben will (bei MVP=Identity)



  • nachfrager schrieb:

    ne, das sind exakt die selben Werte wie auch D3D akzeptieren würde.

    Dann ist es doch eben NICHT wie in D3D!
    Offenbar muss ich also eine z-Koordinate von -1 angeben, wenn ich den Punkt auf der Near Plane haben will (bei MVP=Identity)

    Ganz genau so ist es.



  • nachfrager schrieb:

    Wieso sagst du dann das hier:

    Weil ich nicht davon ausgegangen bin, dass wir von der Identitätsmatrix reden (du hast es auch nicht gesagt). In allen Projektionsmatrizen OpenGL betreffend wird das nämlich beachtet. Und dann gilt halt: Alle Punkte die durch die D3D Projektion gehen gehen auch genau so durch die OpenGL transformation, liegen zum Schluss aber auf anderen Punkten.


Log in to reply