我有一个我的主角的精灵。我通常用 ARGB(255,255,255,255) 的颜色模数绘制它。但是,我希望我的精灵画得更白。我可以通过改变颜色模数使精灵被绘制成任何颜色,除了白色。我能做些什么?我使用 C++ 和 DirectX9 并使用 LPD3DXSPRITE 来绘制我的纹理。
问问题
968 次
2 回答
1
我知道有两种方法,一种低效,一种更有效:
效率低下)使用 alphablending 绘制另一个半透明的白色精灵。
高效)使用着色器绘制四边形。(一个简单的着色器,在纹理样本的实际返回值上添加一个值,而不是相乘)
于 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 回答