2010-01-01 4 views
2

나는 주인공의 스프라이트가 있습니다. 저는 보통 ARGB (255,255,255,255)의 색상 계수로 그립니다. 그러나 필자는 스프라이트를 더 흰색으로 그려야한다. 흰색을 제외하고는 색상 모듈을 변경하여 스프라이트를 임의의 색상으로 그릴 수 있습니다. 내가 무엇을 할 수 있을지? DirectX9에서 C++을 사용하고 LPD3DXSPRITE를 사용하여 텍스처를 그립니다.DirectX 스프라이트 켜기 솔리드 흰색

비효율적) 알파 블렌딩을 사용하여 다른 semitranparent 흰색 스프라이트 그리기 :

답변

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(); 

나는 그것이 간단하고 효율적인 것 같아요.