AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia C# (managed DX): ZBuffer will nicht wie er sollte
Thema durchsuchen
Ansicht
Themen-Optionen

(managed DX): ZBuffer will nicht wie er sollte

Ein Thema von JasonDX · begonnen am 1. Jul 2005 · letzter Beitrag vom 1. Jul 2005
Antwort Antwort
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#1

(managed DX): ZBuffer will nicht wie er sollte

  Alt 1. Jul 2005, 18:49
So, jetzt nerv ich gleich nochmal mit dem Managed DirectX-Problem :

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
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Phobeus

Registriert seit: 14. Sep 2003
Ort: Tespe
65 Beiträge
 
Delphi 7 Professional
 
#2

Re: (managed DX): ZBuffer will nicht wie er sollte

  Alt 1. Jul 2005, 21:44
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.
Florian Sievert
http://www.delphigl.com/
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#3

Re: (managed DX): ZBuffer will nicht wie er sollte

  Alt 1. Jul 2005, 21:56
Thx mal für deine Antwort
Ich werd ws morgen mal die Punkte durchgehn und euch wieder nerven, wenns noch Probleme gibt
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:27 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