虽然传统的用含遮罩信息的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; iRow<height; iRow++ ) { for( int iCol=0; iCol<width; iCol++ ) { masked_pixel_buf[i] = pByte[0]; masked_pixel_buf[i+1] = pByte[1]; masked_pixel_buf[i+2] = pByte[2];