主人公のスプライトがあります。私は通常、ARGB(255,255,255,255)のカラーモジュラスで描画します。ただし、スプライトをもっと白く描いてほしい。白以外の色係数を変更することで、スプライトを任意の色で描画できます。私に何ができる?DirectX9でC++を使用し、LPD3DXSPRITEを使用してテクスチャを描画しています。
2 に答える
1
私が知っている2つの方法があります。1つは非効率的で、もう1つはより効率的です。
非効率的)アルファブレンディングを使用して、別の半透明の白いスプライトを描画します。
効率的)シェーダーを使用してクワッドを描画します。(テクスチャサンプルの実際の戻り値に乗算するのではなく、値を追加する単純なシェーダー)
于 2010-01-02T16:28:52.083 に答える
1
これを試して:
IDirect3DDevice9* device = your_device;
LPD3DXSPRITE sprite = your_sprite;
LPDIRECT3DTEXTURE9 texture = your_texture;
D3DXVECTOR3 center;
D3DXVECTOR3 position;
unsigned char c = how_white_you_want;
sprite->Begin(D3DXSPRITE_ALPHABLEND);
device->SetTextureStageState( 0, D3DTSS_COLOROP, D3DTOP_ADD );
device->SetTextureStageState( 0, D3DTSS_COLORARG1, D3DTA_TEXTURE );
device->SetTextureStageState( 0, D3DTSS_COLORARG2, D3DTA_DIFFUSE );
sprite->Draw(texture, NULL, ¢er, &sprite, D3DCOLOR_RGBA(c,c,c,255));
sprite->End();
シンプルで効率的だと思います。
于 2010-08-21T05:04:25.307 に答える