4

DirectXでこれを行う方法は?

glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);

どういうわけか、私はそれを機能させることができないようです。コードを使用しています:

d3ddev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCCOLOR);
d3ddev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCCOLOR);
d3ddev->SetRenderState(D3DRS_ALPHABLENDENABLE, 1);
d3ddev->SetRenderState(D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL);
d3ddev->SetRenderState(D3DRS_ALPHAREF, (DWORD)50);
d3ddev->SetRenderState(D3DRS_ALPHATESTENABLE, 1);

しかし、それはある種のゴーストメソッドで私のポリゴンをレンダリングします.私はすべてのポリゴンを通して見ることができます! 完全に透明なテクスチャの部分を透けて見えるように、アルファ チャネルを使用してテクスチャを作成したいだけです。これは alphatest で機能しますが、まだ黒いエッジが表示されるため、 D3DRS_ALPHABLENDENABLE を設定してもブレンドが有効になっていないと思います! 私は何を間違っていますか?

4

1 に答える 1

4

SRCCOLORの代わりにSRCALPHAを使用する必要がありました。

d3ddev->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
d3ddev->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
于 2012-01-14T19:15:58.323 に答える