使用DX9创建后台缓存,通过present提交自己绘制的后台缓存信息
关键:
1.创建D3D时,添加以下参数:
d3dpp.Flags = D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
d3dpp.BackBufferFormat = D3DFMT_A8R8G8B8;
d3dpp.BackBufferCount = 1;
2.锁住后台缓存,获取pitch、bits
D3DLOCKED_RECT rect;
if (FAILED(mBackSurface->LockRect(&rect, 0, 0)))
return false;
3.创建和后台缓存一样大小的区域
4.memcpy customizebuffer到后台缓存
5.模拟clear时,要是用四字节初始化,否则部分数据丢失
void memsetDWORD(void *dest, int data, uint count)
{
_asm
{
mov edi, dest
mov eax, data
mov ecx, count
rep stosd
} // end _asm
}