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

27.08.2006, 21:32

Problem mit Effekten (D3DXEFFECT) und alphablending

Hi!
Habe ein Problem mit alphablending in effekten.
Das ganze sieht so aus (ohne laden des effektes):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    //Effekte einsetzen

    g_pD3DDevice->SetTexture(0, g_pTexture);
    g_pD3DDevice->SetTexture(1, NULL);
    g_pD3DDevice->SetTextureStageState(0, D3DTSS_TEXCOORDINDEX, 0);

    g_pEffect1->Begin(&uiNumPasses, 0);

    for(UINT uiPasses = 0; uiPasses < uiNumPasses; uiPasses++){
        mWorld = tbMatrixTranslation(tbVector3(0.0f, 0.0f, 1.0f * uiPasses));
        g_pEffect1->SetMatrix("transmatrix", (D3DXMATRIX*)(&mWorld));

        g_pEffect1->BeginPass(uiPasses);

        g_pSphere->DrawSubset(0);

        g_pEffect1->EndPass();
    }

    g_pEffect1->End();


Der effekt sieht so aus:

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
29
30
31
32
33
34
35
36
37
MATRIX  transmatrix;

TECHNIQUE T1
{
    PASS P1
    {
        // Das Material festlegen
        MaterialDiffuse  = {1.0f, 1.0f, 1.0f, 1.0f};
        MaterialAmbient  = {0.5f, 0.5f, 0.5f, 0.0f};
        MaterialEmissive = {0.0f, 0.0f, 0.0f, 0.0f};

        SpecularEnable = FALSE;
        
        WorldTransform[0] = <transmatrix>;
    }

    PASS P2
    {
        ZWriteEnable = FALSE;

        AlphaBlendEnable = True;
        SrcBlend         = SRCALPHA;
        DestBlend        = INVSRCALPHA;
        
        WorldTransform[0] = <transmatrix>;

        MaterialDiffuse  = {1.0f, 1.0f, 1.0f, 0.5f};

        CullMode = CW;  
    }

    PASS P3
    {
        CullMode = CCW;
    }

}


Das Problem ist, dass er das Objekt (g_pSphere) beim 2ten mal zeichnen nicht durchsichtig macht, obwohl ich SRCALPHA/INVSRCALPHA angegeben hab und in der Streufarbe 0.5 beim alphavalue angegeben hab. Also er zeichnet die kugel ganz normal, ohne irgendeine durchsichtigkeit

Schonmal danke im vorraus ;)
mfg

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

27.08.2006, 21:57

Klar, dass die Kugel nicht durchsichtig ist, weil der 1. Pass ja kein Alpha-Blending benutzt.

3

27.08.2006, 22:28

jo, aber der zweite... und bei jedem durchlauf zeichnet er ja die kugel. Und die zweite kugel is ja verschoben (also net genau über der ersten). Oder meinst du was andres? :O

mfg

Anonymous

unregistriert

4

28.08.2006, 09:13

Re: Problem mit Effekten (D3DXEFFECT) und alphablending

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
29
30
31
32
33
34
35
36
37
38
MATRIX  transmatrix;

TECHNIQUE T1
{
    PASS P1
    {
                // Wo ist hier das Alphablending???
        // Das Material festlegen
        MaterialDiffuse  = {1.0f, 1.0f, 1.0f, 1.0f}; 
        MaterialAmbient  = {0.5f, 0.5f, 0.5f, 0.0f};
        MaterialEmissive = {0.0f, 0.0f, 0.0f, 0.0f};

        SpecularEnable = FALSE;
        
        WorldTransform[0] = <transmatrix>;
    }

    PASS P2
    {
        ZWriteEnable = FALSE;

        AlphaBlendEnable = True; // Alphablending
        SrcBlend         = SRCALPHA;
        DestBlend        = INVSRCALPHA;
        
        WorldTransform[0] = <transmatrix>;

        MaterialDiffuse  = {1.0f, 1.0f, 1.0f, 0.5f};

        CullMode = CW;  
    }

    PASS P3
    {
        CullMode = CCW;
    }

}


Ich hab davon noch keine Ahnung, aber David's Aussage folgend, sollte
da der Fehler liegen. (Habs oben kommentiert).

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

5

28.08.2006, 10:29

Ist die Kugel texturiert? Hat die Textur eine Alpha Komponente? Wenn nein, versuch mal eine Textur mit Alpha.
"Games are algorithmic entertainment."

6

28.08.2006, 11:23

Zitat


Ich hab davon noch keine Ahnung, aber David's Aussage folgend, sollte
da der Fehler liegen. (Habs oben kommentiert).

Ich weis schon was er gemeint hat, aber beim ersten durchlauf soll er noch kein alphablending bekommen, deshalb kann ich mir nicht vorstellen dass ich da schon alphablending einschalten muss.

Zitat


Ist die Kugel texturiert? Hat die Textur eine Alpha Komponente? Wenn nein, versuch mal eine Textur mit Alpha.

Kugel ist texturier, allerdings hat die Textur keinen Alpha-Kanal.

mfg

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

7

28.08.2006, 12:00

Wie siehts mit den AlphaOperatoren aus?
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

Werbeanzeige