我有一个主角的精灵。我通常使用ARGB的颜色模数(255,255,255,255)绘制它。但是,我希望我的精灵画得更白。我可以通过改变颜色模数来绘制精灵,除了白色。我能做什么?我正在使用C ++和DirectX9并使用LPD3DXSPRITE来绘制纹理。
答案 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, ¢er, &sprite, D3DCOLOR_RGBA(c,c,c,255));
sprite->End();
我认为它简单而有效。