|
|
我想知道的是,既然创建DeviceObject时默认的BackBuffer不能被Lock,那么StretchRect是如何将图像数据拷贝进BackBuffer并且使其能够被Present的?由此引申出来另一个问题——我能够在窗口模式下直接操作BackBuffer的数据吗?将渲染全部做到一个Offscreen buffer里然后再StretchRect整个区域过去似乎并不是一个很有效率的方法,我猜想StretchRect的调用并不是必须的,也许我可以效仿StretchRect的部分功能以写入BackBuffer,请问我应该怎么做?
补充:这里说的BackBuffer是由IDirect3DDevice9->GetBackBuffer返回的表面
xor ebx,ebx
mov ecx,ID3D9Device
lea eax,IBackBuffer
push eax
mov edx,[ecx]
push ebx
push ebx
push ebx
push ecx
call DWORD PTR[edx + Device_GetBackBuffer]
mov ecx,IBackBuffer
push D3DLOCK_DISCARD
mov edx,[ecx]
push ebx
lea eax,lockRect
push eax
push ecx
call DWORD PTR[edx + Surface_LockRect]
int 3 ;此处看到返回错误了 |
|