Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

14.06.2005, 16:26

D3DFVF_XYZRHW + ZBuffer

Hey,

ich habe ein Problem. Ich möchte ein Dreieck rendern, welches immer die gleiche Größe hat, egal ob die Kamera weit oder nicht weit entfernt ist. So habe ich mir gedacht, ich nehme da einfach D3DFVF_XYZRHW. Dies klappt bei deaktiviertem z-Buffer sehr gut. Leider möchte ich aber den Z-Buffer nutzen, da die Pixel nur gezeichnet werden sollen, wenn der Z-Wert des Pixels kleiner als der vorhandende Wert ist... Wie geht dies? Wenn ich sage, dass D3DRS_ZENABLE == TRUE ist, dann zeichnet der Rechner komsicherweise das Dreieck nicht (auch wenn der Z-Wert == CurrentViewPort.z ist...)

Danke,

F.

2

14.06.2005, 22:33

willst du dass das dreieck irgendwie korrekt in deiner
szene sitzt oder soll es einfach nur hinter oder vor der komplette szene
sein?
wenn ja, dann musst du nur die z-koordinaten deiner vertizes (vom dreieck)
auf 0 oder 1 setzen.


bye 23h

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

15.06.2005, 09:24

Ich verstehe das so, dass er irgendetwas im Raum darstellen möchte, was relativ zum Betrachter die Größe nicht ändert, z.B. eine Bezeichnung in Textform oder ein Symbol über einem Objekt oder so. Das kennt man ja von einer ganzen Reihe von Spielen oder sonstigen Anwendungen, damit man auch weit entfernte Objekte noch gut sehen bzw. identifizieren kann.

Wenn ich Dich richtig verstanden habe und der obige Text zutrifft, dann kannst Du's doch einfach so machen (eine Möglichkeit von vielen):
Dein Dreiecks (oder was auch immer Du da darstellen möchtest) hat seine Position im 3D-Raum und ist stets zur Kamera hin ausgerichtet. Die Größe musst Du halt an die Entfernung entsprechend anpassen, damit es zu jeder Zeit die selbe Größe hat, was sehr einfach ist, denn die Größe verringert sich mit zunehmender Entfernung linear. Das war's...
Da sich das "Ding" im 3D-Raum befindet, wird es entweder von davor liegenden Objekten verdeckt oder verdeckt wiederum dahinter liegende Objekte.

Anonymous

unregistriert

4

15.06.2005, 21:05

Jo, es ist genauso, wie Steve es gesagt hat...

Also, ich mache es mit Point-Sprites, die ich an einer bestimmten Stelle setze. Das klappt bis jetzt auch ganz gut, nur eben kriege ich es nicht hin, dass die Größe des Viereck-Punktes immer gleich groß ist. Bzw, ich kriege es hin (durch die RS D3DRS_POINTSIZE_MIN u. D3DRS_POINTSIZE), nur leider ändert sich die Position am Ende auf dem Bildschirm bei zunehmender Entfernung zur Kamera. Ich weiß nicht, wie ich das besser beschreiben soll...

Was kann ich dagegen tun?

Anonymous

unregistriert

5

15.06.2005, 21:59

Sorry, ware gerade ein wenig verwirrt. Also, jetzt mal ganz neu...

Ich brauche den Abstand(höhendifferenz)) zweier Punkte (in Weltkoordinaten), von denen ich den Z-Wert und die Bildschirm-Koordinaten kenne

Werbeanzeige