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

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

21

30.07.2012, 15:32

Was mir hier aber noch unklar ist: wenn nun ein Pixel im Z-Buffer vorhanden ist und eine rote Farbe hat, und dann möchte ich ein Pixel in Cyan darüber setzen. Wie kann ich bewirken, dass der Rot-Wert erhalten bleibt, hingegen der Grün-Blau=Cyan - Wert, je nach Z-Buffer-Wert überschrieben oder abgelehnt wird?

Wenn du den einen Kanal gerendert hast, leerst du den Z-Buffer und den anderen Farbkanal und renderst die zweite Sicht.

22

30.07.2012, 16:14

Ich weiß jetzt nicht auf Anhieb, wie man den Z-Buffer leert ohne dass der Backbuffer auch gelöscht wird. Wenn du bitte das auf die Schnelle sagen kanst, sonst gehe ich weiter auf die Suche danach. Und dann, bleiben die nicht erlaubten Farbebenen im Backbuffer, wenn ich die zweite Sicht rendere? Wenn das alles so funktioniert, wäre es super.

Wenn nicht, ist es wirklich so aufwendig, in verschiedene Rendertargets zu rendern und dann mit Alphablending die beiden Bilder übereinander zu klatschen? Was mir dazu fehlt, ist einfach nur ein Beispiel. Ich habe leider erfolglos versucht, einen Buffer für ein Rendertarget anzugeben.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

23

30.07.2012, 16:22

Bei IDirect3DDevice9::Clear gibst du doch explizit an, ob du Back-Buffer, Z-Buffer und/oder Stencil-Buffer leeren willst ... das sollte dir schon aufgefallen sein, wenn du jemals eine D3D-Anwendung geschrieben hast :D
Ich bin mir jetzt nicht sicher, ob Clear auch D3DRS_COLORWRITEENABLE beachtet. Wenn nicht, dann malst du halt ein bildschirmfüllendes schwarzes Rechteck ohne Z-Buffer.

24

12.08.2012, 00:58

Hallo David,

nochmals vielen Dank, das funktioniert super. Ich bin erst nach einer Pause wieder dazu gekommen, weiter zu machen. Ich mache folgendes:

- enable Farbe rot
- Objekt rendern
- enable Farben grün+blau
- ZBuffer löschen
- Kameraposition etwas nach links verschieben
- Objekt rendern

Herrlicher 3D-Effekt in Red/Cyan.

Ich weiß natürlich inzwischen auch, wie man den Backbuffer in ein Bitmap bringt, das ist aber für diese Zwecke viel zu langsam. Die CPU darf dabei keinerlei Aufgaben zugeteilt bekommen.

Danke und Gruß,
Franz

Werbeanzeige