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

08.02.2004, 14:37

Alphablending und Multitexturing

Hallo,

ich habe mal eine Frage: Ich möchte zwei Texturen addieren und dann auf dem Bildschirm anzeigen. Dies ist mir auch ganz gut gelungen, nun möchte ich aber auch den Alpahwert addieren.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    // Vertexformat und Texturen setzen, RenderSates für AlphaBlending aktivieren
    tbDirect3D::SetFVF(D3DFVF_XYZRHW | D3DFVF_TEX2);
    tbDirect3D::SetTexture(0, m_pRadarTex);
    tbDirect3D::SetTexture(1, pRadar2Tex);

    tbDirect3D::SetRS(D3DRS_ALPHABLENDENABLE, TRUE);
    tbDirect3D::SetRS(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
    tbDirect3D::SetRS(D3DRS_DESTBLEND, D3DBLEND_DESTALPHA);
    tbDirect3D::SetRS(D3DRS_BLENDOP, D3DBLENDOP_ADD);

    // Die zweite Texturschicht benutzt die Texturkoordinaten der ersten.
    tbDirect3D::GetDevice()->SetTextureStageState(1, D3DTSS_TEXCOORDINDEX, 0);

    tbDirect3D::GetDevice()->SetTextureStageState(0, D3DTSS_COLOROP,    D3DTOP_MODULATE);
    tbDirect3D::GetDevice()->SetTextureStageState(0, D3DTSS_COLORARG1,  D3DTA_CURRENT);
    tbDirect3D::GetDevice()->SetTextureStageState(0, D3DTSS_COLORARG2,  D3DTA_TEXTURE);

    tbDirect3D::GetDevice()->SetTextureStageState(0, D3DTSS_ALPHAOP,    D3DTOP_MODULATE);
    tbDirect3D::GetDevice()->SetTextureStageState(0, D3DTSS_ALPHAARG1,  D3DTA_CURRENT);
    tbDirect3D::GetDevice()->SetTextureStageState(0, D3DTSS_ALPHAARG2,  D3DTA_TEXTURE);

    tbDirect3D::GetDevice()->SetTextureStageState(1, D3DTSS_COLOROP,    D3DTOP_ADD);
    tbDirect3D::GetDevice()->SetTextureStageState(1, D3DTSS_COLORARG1,  D3DTA_CURRENT);
    tbDirect3D::GetDevice()->SetTextureStageState(1, D3DTSS_COLORARG2,  D3DTA_TEXTURE);

    tbDirect3D::GetDevice()->SetTextureStageState(1, D3DTSS_ALPHAOP,    D3DTOP_ADD);
    tbDirect3D::GetDevice()->SetTextureStageState(1, D3DTSS_ALPHAARG1,  D3DTA_CURRENT);
    tbDirect3D::GetDevice()->SetTextureStageState(1, D3DTSS_ALPHAARG2,  D3DTA_TEXTURE);


Leider sehe ich jetzt aber nur die erste Textur in einem ganz hellen (hoher Alphawert) Pink, obwohl die Textur rot sein müsste.

danke,

Chrissi

PS: heißt es egentlich D3DFVF_XYZRHW | D3DFVF_TEX2 oder D3DFVF_XYZRHW | D3DFVF_TEX1???

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

08.02.2004, 15:04

Re: Alphablending und Multitexturing

Zitat von »"chrissi"«

PS: heißt es egentlich D3DFVF_XYZRHW | D3DFVF_TEX2 oder D3DFVF_XYZRHW | D3DFVF_TEX1???

Das kommt natürlich darauf an, ob Du ein oder zwei Paar Texturkoordinaten in Deiner Vertexstruktur hast. Vielleicht liegt da ja der Fehler. Nimm mal TEX1, es sei denn Du hast gleich zwei Paar Texturkoordinaten für jeden Vertex. Wenn man hier einen Fehler macht, ist das ziemlich gravierend, da Direct3D die Daten alle falsch interpretiert.

3

08.02.2004, 15:35

Ich hatte eigentlich TEX1, aber so jemand bei gamedev meinte, ich sollte besser TEX2 nehmen. Beides funktioniert, aber, David, du hast recht.

Ich habe nur 1 paar Texturkoordinaten, da die zweite Textur die Texturkoordinaten der ersten benutzt.Ich glaube, ich habe den Fehler. Naja

Danke,

Chrissi

PS: David, hasst du schon einen Release-termin für deinen 3ds-Exporter???

Werbeanzeige