Blending-Frage



  • Jetzt krieg ich aber langsam die Krise...
    seit Stunden probier ich schon mit verschiedensten RenderStages und TextureStageStages herum, aber es will einfach nicht funktionieren!! 😡

    Wovon ich rede ist Blending, also ich hab 2 Texturen in D3D die ich so blenden will das sich deren Texelfarben mischen. Aber das einzige was ich rausbekomme ist meistens ne weiße Textur, oder die zuletzt gezeichnete Textur.. unverändert.

    Ich zeichne die 2 Texturen per ID3DXSprite::Draw()..

    Was ist denn da die richtige vorgehensweise? Ich denk mir das so:
    ID3DXSprite::Begin() aufrufen, dann per SetTextureStageState bzw. SetRenderState die richtigen Stages setzen, und dann die 2 Draw-Aufrufe, gefolgt von dem ID3DXSprite::End().

    Die Frage ist: geht das so, und wenn ja was sind die richtigen Stages? Ich habs mit allem Möglichen versucht, sowohl über die TSS (D3DTSS_COLOROP/D3DTOP_ADD) wie auch über die RenderStages(D3DRS_SRC-DEST-BLEND/D3DBLEND_SRC/DEST-COLOR)
    aber nichts funktioniert richtig.
    Ich muss da irgendwas in der Dokumentation missverstehen, find aber auch keine Tutorials dafür wie man sowas per D3DX macht. Vielleicht kennt jmd von euch eins, wäre sehr dankbar dafür...

    mfg Final



  • Benutze mfcTex.

    Bye, TGGC \-/



  • Würde ich ja...aber ich habs nicht...

    Wenn ich mich nicht irre ist MfcTex beim DirectX 8.1 SDK dabei, das hab ich aber nunmal nicht, und nur wegen MfcTex das ganze SDK herunterladen?



  • FinalNotriX schrieb:

    Wenn ich mich nicht irre ist MfcTex beim DirectX 8.1 SDK dabei,

    Mag sein.

    Wichtig ist aber: _NICHT NUR_ ! 🤡 👍

    Jedenfalls isset beim 9.0b SDK dabei! 😋 👍



  • FinalNotriX schrieb:

    nur wegen MfcTex das ganze SDK herunterladen?

    Ja

    Bye, TGGC \-/



  • Jo, alles klar, danke 🙂
    Hab MfcTex gefunden...ich hab nach ner .exe gesucht, is aber nur als Source dabei.
    für die dies interressiert, oder die die dasselbe Problem haben, das sind die TSS:

    pd3dDevice->SetTextureStageState( 0, D3DTSS_COLOROP,   D3DTOP_SELECTARG1 );
       pd3dDevice->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
       pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAOP,   D3DTOP_SELECTARG1 );
       pd3dDevice->SetTextureStageState( 0, D3DTSS_ALPHAARG1, D3DTA_TEXTURE );
    
       pd3dDevice->SetTextureStageState( 1, D3DTSS_COLOROP,   D3DTOP_ADD );
       pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG1, D3DTA_TEXTURE );
       pd3dDevice->SetTextureStageState( 1, D3DTSS_COLORARG2, D3DTA_CURRENT );
       pd3dDevice->SetTextureStageState( 1, D3DTSS_ALPHAOP,   D3DTOP_DISABLE );
    

    Die Sache funktioniert jetzt...


Anmelden zum Antworten