Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   C# (managed DX): ZBuffer will nicht wie er sollte (https://www.delphipraxis.net/48879-managed-dx-zbuffer-will-nicht-wie-er-sollte.html)

JasonDX 1. Jul 2005 17:49


(managed DX): ZBuffer will nicht wie er sollte
 
So, jetzt nerv ich gleich nochmal mit dem Managed DirectX-Problem :stupid: :

Vorher ist es mir bloß nicht aufgefallen (weil alles Schwarz war :? ), aber nachdem ich etwas Farbe in meine Modelle gebracht habe, habe ich ein kleines Problem: Der Z-Buffer.
Die Modelle werden nicht nach z-Koordinate sortiert gezeichnet, sondern in der Reihenfoge, in der ich sie zeichne. Das bringt dann ein etwas chaotisches Bild, bei dem man sich nicht auskennt.
In der MSDN steht zwar, dass der ZBuffer im RenderState eines Devices per default auf true liegt, aber auch das Setzen von device.RenderState.ZBufferEnabled = true; bringt nichts. Ein Objekt, das hinter einem Objekt liegt, wird teilweise immernoch davor gezeichnet.
Sind da weitere bestimmte Einstellungen zu treffen, um dem vorzubeugen :?:

Phobeus 1. Jul 2005 20:44

Re: (managed DX): ZBuffer will nicht wie er sollte
 
Also Ihr D3Dler habt merkwürdige Probleme. ;) Nie würde ich die API als solche in Frage stellen, wohl aber die Dokumentation mit der man sich rumplagen muss. Ist die in den letzten 3 Jahren nicht besser geworden... ;)
Aber gut, zu deinem Problem. Ich kenne mich nicht mit Managed DirectX aus, aber mit OpenGL und D3D8. Also betrachte einmal meine Hilfe als "Glaskugel" aus dem Jenseits ... folgende mögliche Szenarien:

1.Der Tiefenpuffer muss mit einer Bitrate versehen sein. Bei OpenGL geschieht dies bei der Initalisierung. Bei
D3D mußte man dies IMAO ... irgendwann danach machen und zwar bei Device selbst. Suche mal beim Device nach etwas wie ... ja, wie ging MS Speak. IMAO sprach man von Stencils. Also irgend etwas wie Device.DepthStencilFormat suchen und schauen auf was dieses eingestellt ist. Evtl. ist dies nicht initalisiert oder sehr ungenau. Entferne die Distanz zwischen den Objekten (mehre volle Einheiten) und schau ob es evtl. dann behoben ist.

2. Fällt weg, da Du angibst, den Tiefenbuffer im Renderstate zu aktiveren. Ich traue Dir zu True und false zu unterscheiden (schaue trotzdem nochmal nach im Verlauf des Abends, nimmt das merkwürdige Formen an :)

3. Der Tiefenbuffer wird nicht geleert. Bei OpenGL geschieht dies mit glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT). Eine solche (oder ähnliche) Methode wird es vermutlich auch beim Device geben. Evtl. heißt es ein wenig anderes, aber das Prinzip sollte gleich sein.

Das sind eigentlich die drei möglichen Schwachstellen, die das von Dir beschriebene Problem erklären könnten. Ansonsten halt soviel wie möglich deaktivieren um Wechselwirkung anderer Techniken auszuschließen.

JasonDX 1. Jul 2005 20:56

Re: (managed DX): ZBuffer will nicht wie er sollte
 
Thx mal für deine Antwort :thumb:
Ich werd ws morgen mal die Punkte durchgehn und euch wieder nerven, wenns noch Probleme gibt ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz