DirectX und Z-Buffer
-
Hallo!
Gibt es eine Funktion unter DirectX die mir die Tiefenwerte des z-Buffers zurück liefert?
Wenn ja, wie sieht die Datenstruktur aus? Würde ich zum Beispiel eine Art Array bekommen? Z.B. bei einer perspektivischen Projektion wäre der Tiefenwert eines Pixels, das den Hintergrund der Scene visualisiert (kein Objekt) 1!
Grüße
-
Wenn du mehrere Objekte darstellst und die tiefenversetzt sind, führst du vermutlich auch translationen aus oder?
du kannst dir die Matrix nehmen mit der du letztendlich deine WeltTransformation durchführst und mit:mat._41 // x mat._42 // y mat._43 // z
deine koordinaten auslesen.
das musst du dann aber machen nachdem du jedes einzelne objekt platziert hast.
dann kannst du das in jede beliebige form bringen. z.b. ein Array
-
HelloWorld() schrieb:
Hallo!
Gibt es eine Funktion unter DirectX die mir die Tiefenwerte des z-Buffers zurück liefert?
Ja, wenn die Hardware es kann.
Wenn ja, wie sieht die Datenstruktur aus?
Kommt auf die Hardware an.
Würde ich zum Beispiel eine Art Array bekommen?
Das ganz sicher. Ein zweidimensionales sogar, typischerweise mit Stride != Width.
Z.B. bei einer perspektivischen Projektion wäre der Tiefenwert eines Pixels, das den Hintergrund der Scene visualisiert (kein Objekt) 1!
Z.B. bei einer Frage wären die Worte so aneinandergereiht dass ein anderer (nicht der Fragesteller selbst) versteht!
-
Danke für die Hilfe! Aber das hilft mir nicht weiter! Ich wollte Folgendes realisieren!
Eine virtuelle Kamera macht eine perspektivische Projektion von einem Schachbrett ( von oben, Draufsicht) . Leider habe ich nur die Position des Pivot-Punktes (Game-Engine). Für das Objekt kann ich nur einen Vektor für die Position angeben. Ich denke mal, dass es die Position des Pivot-Punktes ist. Ich wollte jetzt mit Hilfe des Z-Buffers die Eckpunkte des Schachbretts ermitteln! Ich weiss, dass ich die Ausdehnung des Schachbretts nehmen könnte um die Eckpunkte zu ermitteln. Müsste ich diese ermittelten 3D-Punkte mit Hilfe der Projektionsmatrix multiplizieren um an die Pixelkooerdinaten zu kommen?
Das wäre doch eine Idee, oder?
Dann bräuchte ich doch den Z-Buffer nicht?Die Bildachsen und das Schachbrett liegen z.B. parallel zu einander.
Grüße
-
Du musst ernsthaft daran arbeiten! Dich verständlicher auszudrücken! Und weniger Rufzeichen zu verwenden!
Was deine Frage angeht: klar kannst du die Position am Bildschirm anhand der ganzen Translations- Projektions- etc. Matritzen ausrechnen. Was meinst du was die Grafikkarte anderes macht?
Und was meinst du mit Pivot-Punkt? Den Ursprung des lokalen Koordinatensystems?