Laden...

Sichtbarkeit von Objekten

Erstellt von Grzfrz vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.254 Views
G
Grzfrz Themenstarter:in
48 Beiträge seit 2006
vor 17 Jahren
Sichtbarkeit von Objekten

Anscheinend habe das Problem nur ich oder ich bin zu doof für Google..

Ich habe ein paar Objekte (Kugeln), die sich einfach umkreisen. Logischerweise sind dann ab und zu einige nicht sichtbar, da durch andere verdeckt. Wie schafft man es mit Direct3D etwas so grundlegendes umzusetzen? g

Momentan hängt es alleine davon ab, in welcher Reihenfolge ich die Kugeln zwischen beginscene und endscene setze. Ergo müsste man jedesmal eine neue Reihenfolge bestimmen? Es hat nicht jemand zufälligerweise ein Tutorial oder ähnliches dafür ^^

Und noch eine Frage, hat es einen tieferen Sinn das standartmäßig alles mit linkshändigen Koordinatensystemen gerendert wird? Üblich ist in der technik bzw generell ein RH-System?

4.506 Beiträge seit 2004
vor 17 Jahren

Hallo Grzfrz,

ich kann Dir zu 3D etc. überhaupt keine Antwort geben. Was ich allerdings weiß, ist dass in der Graphischen Datenverarbeitung tatsächlich sich seit jeher ein LH-System eingefunden hat, während in der Technik allzuüblich RH-Systeme verwendet werden.

Also das ist so, und das wird sich wahrscheinlich auch nicht ändermn (leider).

Gruß
Norman-Timo

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

B
387 Beiträge seit 2005
vor 17 Jahren

Servus

Das mit der Reihenfolge ist kein großes Problem. Du musst nur den Depthbuffer (Tiefenbuffer) aktivieren.

                m_presentParams.EnableAutoDepthStencil = true;
m_presentParams.AutoDepthStencilFormat = DepthFormat.D16;

So merkt sich DirectX für jeden gerenderten Pixel zusätzlich dessen Tiefeninformation, und gleicht neue Pixel damit ab.

Du musst aber auch dein device.Clear erweitern:

                    m_device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, Color.White, 1.0f, 0);

Mfg Blacal

G
Grzfrz Themenstarter:in
48 Beiträge seit 2006
vor 17 Jahren

Wunderbar läuft das jetzt, danke dir 🙂