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

1

12.08.2009, 12:46

DirectX 9 - Vertices in Punktliste transparent rendern

Hallo miteinander.

Ich bin neu hier im Forum und habe gleich mal eine verzwickte Frage :D :
Ich bastle gerade an einer Art 3D-Space-Shooter. Dafür brauche ich natürlich einige Partikeleffekte. Der erste den ich programmiert habe
ist ein "Energieschild-Flash", d.h. wenn ein Schiff getroffen wird soll sein
Schild blau flackern.

Das habe ich umgesetzt, indem ich eine Kugel aus Vertices generiere
und diese dann, je nach Auftreffpunkt des Projektils, intensiver oder
weniger intensiv einfärbe. Allerdings scheint das flexible Vertex-Format
D3DFVF_XYZ | D3DFVF_DIFFUSE keine Transparenz (also Alpha) zu
unterstützen, sondern nur RGB-Farben, sodass meine Vertices, wenn
als D3DPT_POINTLIST gerendert, immer alle sichtbar sind.

Hat jemand eine Idee wie ich das umgehen könnte?

2

12.08.2009, 13:02

ich würde mal wetten, das es nciht am Vertexformat liegt (das unterstützt nämich RGBA), sondern daran, das du vergessen hast, bei den renderstates Alphablending einzuschalten, und D3DRS_SRCBLEND auf D3DBLEND_SRCALPHA und D3DRS_DESTBLEND auf D3DRS_INVSRCALPHA zu setzen ;)

3

12.08.2009, 13:14

Danke, aber es funktioniert noch immer nicht. Das hier sind
meine Renderstates:

device->SetRenderState(D3DRS_AMBIENTMATERIALSOURCE, D3DMCS_COLOR1);
device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
device->SetRenderState(D3DRS_LIGHTING, FALSE);

4

12.08.2009, 13:22

ok, da hätte ich die wette wohl verloren :D
fehlt trotzdem noch eins: D3DRS_COLORVERTEX auf TRUE ;)
hab ich gefunden, als ich in der DX-Doku nach D3DRS_AMBIENTMATERIALSOURCE geguckt hab

5

12.08.2009, 13:35

same as before... *sigh*.
Es gäbe auch noch die Möglichkeit, die Kugel als Triangle-List, d.h. als
Mesh, zu rendern, das Problem ist nur: Wie konstruiert man eine Kugel
aus Vertices algorithmisch, sodass dann jeweils die richtigen Vertices
zusammen ein Dreieck bilden? Und ob dadurch das Alpha-Problem gelöst würde, bleibt fraglich...

GR-PA

Treue Seele

Beiträge: 326

Wohnort: Daheim

Beruf: Faulenzer

  • Private Nachricht senden

6

12.08.2009, 15:03

Zerlege die Kugel in Spalten und Zeilen und gehe Sie dann beim berechen der einzelnen Punkte Spalten und Zeilenweise durch... Ist doch eig. ganz Einfach. Tutorials darüber, falls du es nicht hinbekommst, findest du massenhaft musst einfach mal suchen.
Signaturen werden überbewertet

Werbeanzeige