2

主人公のスプライトがあります。私は通常、ARGB(255,255,255,255)のカラーモジュラスで描画します。ただし、スプライトをもっと白く描いてほしい。白以外の色係数を変更することで、スプライトを任意の色で描画できます。私に何ができる?DirectX9でC++を使用し、LPD3DXSPRITEを使用してテクスチャを描画しています。

4

2 に答える 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, &center, &sprite, D3DCOLOR_RGBA(c,c,c,255));

sprite->End();

シンプルで効率的だと思います。

于 2010-08-21T05:04:25.307 に答える