转动DirectX精灵纯白色

时间:2010-01-01 11:33:24

标签: directx sprite

我有一个主角的精灵。我通常使用ARGB的颜色模数(255,255,255,255)绘制它。但是,我希望我的精灵画得更白。我可以通过改变颜色模数来绘制精灵,除了白色。我能做什么?我正在使用C ++和DirectX9并使用LPD3DXSPRITE来绘制纹理。

2 个答案:

答案 0 :(得分:1)

我知道有两种方法,一种效率低下,一种效率更高:

低效)使用alphablending绘制另一个半透明的白色精灵。

高效)使用着色器绘制四边形。 (一个简单的着色器,它在纹理样本的实际返回值上添加一个值,而不是将其相乘)

答案 1 :(得分: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();

我认为它简单而有效。