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

16.11.2006, 20:12

Alphablending

Hallo, ich versuche meinen Würfel halbtransparent darzustellen, damit ich auf die hintergrundfarbe durchgucken kann.

nun hab ich die renderstates gesetzt, aber es tut sich scheinbar nichts.

C-/C++-Quelltext

1
2
3
4
    g_pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
    g_pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
    g_pD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
    g_pD3DDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);


mein vertex hat keine farbe, aber ich nutze eine textur. so wie ich das verstanden hab, müsste das mit diesen renderstates doch schon funktionieren?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

16.11.2006, 20:51

hat deine textur einen alphakanal?

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

3

16.11.2006, 20:55

Du musst noch einstellen wo dein Alphawert herkommt, ob aus der Textur, deinen Vertices, evtl auch beidem..
Dazu brauchst du die Funktion SetTextureStageState
"Have you tried turning it off and on again?"

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

16.11.2006, 21:08

wenn die textur auf stage 0 liegt, sollten die alphawerte autom. von der textur kommen denk ich.

wenn nicht, dann musst du das umstellen, wie chase schon gesagt hat.

5

16.11.2006, 21:47

hm, funktioniert nicht. also ich setzt jetzt die stage auf 0, die geb ich auch nämlich auch bei settexture so an.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    g_pD3DDevice->SetTexture(0, g_pTexture);


    g_pD3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_CCW);
    g_pD3DDevice->SetRenderState(D3DRS_DITHERENABLE, TRUE);

    g_pD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
    g_pD3DDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
    g_pD3DDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
    g_pD3DDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_SUBTRACT);
    g_pD3DDevice->SetTextureStageState(0,D3DTSS_COLORARG1, D3DTA_TEXTURE );

    SetMaterial();
    SetLight();
   


>hat deine textur einen alphakanal?
Also den Backbuffer erstell ich mit dem A8R8G8B8 Format, wenn du das meisnt.
[/cpp]

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

6

16.11.2006, 22:05

ich mein, ob deine textur einen alphakanal hat^^

also welches format hat deine textur bzw wie lädst du sie?

wofür genau brauchst du einen backbuffer mit alphakanal?

7

16.11.2006, 22:10

Zitat von »"dot"«

ich mein, ob deine textur einen alphakanal hat^^

also welches format hat deine textur bzw wie lädst du sie?

wofür genau brauchst du einen backbuffer mit alphakanal?


hm, ne ich glaube nicht. ich die texture einfach mit dem tool gemalt das mit auf der cd war. einfach ein hintergrund genommen und 2-3 linien gemalt. das format ist .bmp.

>wofür genau brauchst du einen backbuffer mit alphakanal?

hauptsache haben....keine ahnung, habs einfach mal genommen...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

16.11.2006, 22:24

^^um, bmp unterstützt afaik keinen alphakanal, wie sollt also da ein alpha von der textur kommen!?

du kannst beim laden mit D3DX z.b. einen ColorKey angeben, dann wird eine farbe durchsichtig gemacht.
sonst musst du händisch das alpha in deine textur zeichnen und das ganze z.b. als tga speichern...

und ich würd den backbuffer X8R8G8B8 machen, weil nicht immer gesagt ist, dass die jeweilige graka A8R8G8B8 auch unterstützt...

9

17.11.2006, 09:33

Zitat von »"dot"«

^^um, bmp unterstützt afaik keinen alphakanal, wie sollt also da ein alpha von der textur kommen!?

du kannst beim laden mit D3DX z.b. einen ColorKey angeben, dann wird eine farbe durchsichtig gemacht.
sonst musst du händisch das alpha in deine textur zeichnen und das ganze z.b. als tga speichern...

und ich würd den backbuffer X8R8G8B8 machen, weil nicht immer gesagt ist, dass die jeweilige graka A8R8G8B8 auch unterstützt...


werds mal versuchen, danke.

das mit dem backbuffer passt schon, sind eh nur tesanwendungen die nur auf meinem lappy laufen müssen. wenn ich also einen braune texture hab, dann setze ich als colorkey eifnach das braun und ich kann durchgucken?

mit welcher anwendung kann man den alphakanäle erstellen, kann das die aus dem buch?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

10

17.11.2006, 13:14

vielleicht verräts du uns mal den namen von der "aus dem buch" :P

z.b. mit photoshop gehts und paint.net sollte das, denk ich, auch können.

Zitat

wenn ich also einen braune texture hab, dann setze ich als colorkey eifnach das braun und ich kann durchgucken?


richtig

Werbeanzeige