使用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 }