0

d3d でテクスチャ付きクワッドをレンダリングしようとしていますが、テクスチャがレンダリングされているクワッドの頂点のアルファ値を使用していません。むしろ、TEXTURE のアルファを使用しています。

d3d が配置されているポリゴンの頂点のアルファを使用するようにします。

私はそれがSetTextureStageStateに関係しているという考えを持っていますが、まだそれを見つけることができません..

4

1 に答える 1

0

OK、これが私が得たものです:

D3DTSS列挙 (D3DTSS_* 設定のデフォルト値を含む)

D3DTA列挙

// where does the SRC color come from?
// why, the currently bound texture of course!
d3d->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
// Default:  D3DTA_TEXTURE (anyway.  So this setting is redundant.)

大きな変化が次に来る:

// let the alpha component be read from the
// diffuse color of the vertex..
d3d->SetTextureStageState(0, D3DTSS_ALPHAARG1, D3DTA_DIFFUSE);
// Default: D3DTA_TEXTURE (which would be "pull alpha from the texture")

// because my vertex declaration is set up to send 1 color, and
// D3DRS_DIFFUSEMATERIALSOURCE is set to D3DMCS_COLOR1, this means
// to use the vertex alpha i specify.  i think.

残りはデフォルト値から実際には何も変更しませんが、ここにあるのですべてを見ることができます:

// DEST where does the alpha value come from?  also the
// diffuse component
d3d->SetTextureStageState(0, D3DTSS_ALPHAARG2, D3DTA_CURRENT);
// Default:  D3DTA_CURRENT.  I believe this means "the destination will
// be whatever the existing color in the framebuffer already is"

// setting up as is default, 
d3d->SetTextureStageState(0, D3DTSS_COLORARG2, D3DTA_CURRENT);
// Default:  D3DTA_CURRENT.  No change.

それはうまくいくと思います。

さらに理解を深める: このリンクには、MFCTex と呼ばれる古いが非常にきちんとしたツールが含まれています。

MFCTex プログラム

そのため、さまざまな引数を使用したときに何が起こっているかを簡単に確認できます。

これはもはやこれを行うためのクールな方法ではないことを認識しています。本当にクールな方法は、しばらくの間、独自の頂点シェーダーとピクセル シェーダーを作成することでした。

于 2010-08-31T23:01:16.310 に答える