创建BackSurface

    技术2025-03-01  58

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

    最新回复(0)