Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Samus_Aran JLI'ler

Alter: 38 Anmeldedatum: 12.05.2004 Beiträge: 183 Wohnort: Plauen->des liegt in Sachsen in der nähe von Chemnitz und Zwickau Medaillen: Keine
|
Verfasst am: 04.07.2004, 15:37 Titel: Texturen in D3D9 halb Transparent machen |
|
|
Hy Leute wie kann ich eine Texture halb Transparent machen.
Ich benötige dies um in meinem Spiel(2D) das Wasser halb durchsichtig zu machen um noch Fische und andere Sachen darin zu sehen. |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 04.07.2004, 15:42 Titel: |
|
|
Wenn du XSprite benutz:
Modulate Color!
Einfach alles auf nicht änder setzten, bis auf den Alphawert natürlich _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Zyrian Super JLI'ler

Anmeldedatum: 30.08.2003 Beiträge: 321 Wohnort: Essen Medaillen: Keine
|
Verfasst am: 04.07.2004, 16:08 Titel: |
|
|
m_lpSprite->Draw(...)
da kannst du einen colorkey angeben als letzten parameter angeben.
dazu nimmst du das makro D3DCOLOR_ARGB(alpha,rot,grün,blau).
du musst vorher noch renderstates setzen
Code: |
m_lpD3DDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
m_lpD3DDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE);
m_lpD3DDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
m_lpD3DDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
|
(das müssten die sein)
dann klappt das (: _________________ Schau mir in die Augen, Kleines. |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 04.07.2004, 16:43 Titel: |
|
|
Der letzte Parameter ist kein Colorkey, sondern eine Farbe mit der jeder Texel moduliert wird. D3DRS_ALPHATESTENABLE ist auch für das Blending nicht notwendig. Mit diesem Renderstate und ALPHAFUNC/ALPHAREF legt man fest, bei welchem Alphawert ein Pixel nicht (oder eben doch) angezeigt werden soll.
Es sollte reichen, eine Textur mit Alphakanal (oder eine Textur ohne Alphakanal, dann aber eine Farbe mit Alphawert zum Modulieren angeben) zu verwenden und wie Zyrian vorgeschlagen hat:
Code: |
m_lpD3DDevice->SetRenderState( D3DRS_ALPHABLENDENABLE, TRUE );
m_lpD3DDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
m_lpD3DDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
|
zu verwenden.
C. |
|
Nach oben |
|
 |
Samus_Aran JLI'ler

Alter: 38 Anmeldedatum: 12.05.2004 Beiträge: 183 Wohnort: Plauen->des liegt in Sachsen in der nähe von Chemnitz und Zwickau Medaillen: Keine
|
Verfasst am: 04.07.2004, 16:47 Titel: |
|
|
und damit kann ich etwas halb transparent machen??? |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 04.07.2004, 16:51 Titel: |
|
|
Ja. Was hast du denn? Für das Zeichnen der Textur verwendet du doch bestimmt eine Textur, oder? Wenn du die jetzt halbtranspartent anzeigen willst, dann muss du Draw() mit D3DCOLOR_ARGB(127, 255, 255, 255) als letzten Parameter aufrufen und die Renderstates setzen.
C. |
|
Nach oben |
|
 |
Zyrian Super JLI'ler

Anmeldedatum: 30.08.2003 Beiträge: 321 Wohnort: Essen Medaillen: Keine
|
Verfasst am: 04.07.2004, 18:29 Titel: |
|
|
achte aber auch darauf dass dein verwendetes grafikformat auch einen alphachannel unterstützt, sonst wird das nix  _________________ Schau mir in die Augen, Kleines. |
|
Nach oben |
|
 |
Samus_Aran JLI'ler

Alter: 38 Anmeldedatum: 12.05.2004 Beiträge: 183 Wohnort: Plauen->des liegt in Sachsen in der nähe von Chemnitz und Zwickau Medaillen: Keine
|
Verfasst am: 04.07.2004, 21:04 Titel: |
|
|
Ich benutze das PNG format und mache den hintergrund von vornherrein transparent.
Ist des der Alphachannel??? |
|
Nach oben |
|
 |
Zyrian Super JLI'ler

Anmeldedatum: 30.08.2003 Beiträge: 321 Wohnort: Essen Medaillen: Keine
|
Verfasst am: 04.07.2004, 22:49 Titel: |
|
|
das png format hat einen alphachannel und du hast ihn mit deinem bildbearbeitungsprogramm auf halbdurchsichtig oder so gestellt.
du kannst diesen alphawert aber auch in deinem programm ändern, wie wir es hier beschrieben haben (: _________________ Schau mir in die Augen, Kleines. |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 05.07.2004, 07:12 Titel: |
|
|
Zyrian hat Folgendes geschrieben: | achte aber auch darauf dass dein verwendetes grafikformat auch einen alphachannel unterstützt, sonst wird das nix  |
Wenn man beim DrawBefehl den Alphawert explizit angibt spielt es keine Rolle ob die textur Alphachannel enthält. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Samus_Aran JLI'ler

Alter: 38 Anmeldedatum: 12.05.2004 Beiträge: 183 Wohnort: Plauen->des liegt in Sachsen in der nähe von Chemnitz und Zwickau Medaillen: Keine
|
Verfasst am: 05.07.2004, 13:10 Titel: |
|
|
ich habs hinbekommen (mit photoshop 7) danke nochmal |
|
Nach oben |
|
 |
Zyrian Super JLI'ler

Anmeldedatum: 30.08.2003 Beiträge: 321 Wohnort: Essen Medaillen: Keine
|
Verfasst am: 05.07.2004, 19:54 Titel: |
|
|
Zitat: | Wenn man beim DrawBefehl den Alphawert explizit angibt spielt es keine Rolle ob die textur Alphachannel enthält. |
bei mir hats dabei aber nie geklappt  _________________ Schau mir in die Augen, Kleines. |
|
Nach oben |
|
 |
|