DX下实现图片的遮罩(Mask)

虽然传统的用含遮罩信息的24bit图片来保存一个32bit的图像已经很少见了(以前的游戏比较常见),基本上随着png的流行,已经让32bit格式的图像普及网络以及游戏界了,当然更多的游戏采用dx原生支持的dds,或者可以自定义形状的更加灵活的tga格式等.不过这里还是介绍下在DX下Mask的实现,因为我的项目里涉及到可能要使用旧的游戏资源.

储存mask信息的图片:



D3DLOCKED_RECT locked_rect; 
temp->tex->tex->LockRect(0, &locked_rect, NULL, 0); 
   
BYTE *pByte = (BYTE *) locked_rect.pBits; 
BYTE *pmaskByte = (BYTE *) locked_rect.pBits + width*4; 
   
int  iOffset = locked_rect.Pitch/2;    //偏移字节数 
   
int i=0; 
for( int iRow=0; iRowtex->tex->UnlockRect(0); 
temp->tex->tex->Release();


实现mask后的效果:


你可能感兴趣的:(DX)