Alpha blending mit Alphakanal & Blendfactor in D3D9



  • Hallo Leute,

    kann mir jemand sagen, wie ich ein Alpha Blending mit dem in der Texture vorhandenen Alphakanal und zusätzlich einem Blendfaktor realisiere?

    Alpha Blending mit Alphakanal:

    pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
    pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
    

    Alpha Blending mit Blendfaktor:

    pd3dDevice->SetRenderState( D3DRS_SRCBLEND, D3DBLEND_BLENDFACTOR );
    pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVBLENDFACTOR );
    pd3dDevice->SetRenderState( D3DRS_BLENDFACTOR, 0x808080 );
    

    Aber wie bekomme ich beides zusammen?

    Danke im voraus!!



  • Ich habe mal den Alpha Wert der Textur mit der Diffuse-Farbe des Vertices kombiniert, und zwar so:

    SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA);
    SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
    SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_DIFFUSE);
    SetTextureStageState(0, D3DTSS_ALPHAOP,   D3DTOP_MODULATE);
    

    Anstatt D3DTA_DIFFUSE könntest Du vielleicht D3DTA_TFACTOR benutzen, den man mit SetRenderState( D3DRS_TEXTUREFACTOR, x ) setzen kann.
    Weiß aber nicht, ob das gehen wird.



  • Vielen Dank @0x00000001, so funktioniert es:

    SetRenderState( D3DRS_SRCBLEND, D3DBLEND_SRCALPHA );
    SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
    SetRenderState( D3DRS_TEXTUREFACTOR, 0x80FFFFFF );
    
    SetTextureStageState( 0, D3DTSS_ALPHAARG2, D3DTA_TFACTOR );
    SetTextureStageState( 0, D3DTSS_ALPHAOP, D3DTOP_MODULATE );
    

Anmelden zum Antworten