我想在显卡内存中复制一个表面(它是否称为视频内存?),这就是我获得后缓冲表面的方式:
HRESULT hRes = m_pDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO,
IREF_GETPPTR(pBackBuffer,IDirect3DSurface9));
然后我锁定它(这里省略了代码),并将数据复制到后台缓冲区表面,如下所示:
IRefPtr<IDirect3DSurface9> pSurfTemp;
hRes = m_pDevice->CreateOffscreenPlainSurface(
g_Proc.m_Stats.m_SizeWnd.cx, g_Proc.m_Stats.m_SizeWnd.cy,
s_bbFormat, D3DPOOL_SYSTEMMEM,
IREF_GETPPTR(pSurfTemp,IDirect3DSurface9), NULL );
hRes = m_pDevice->GetRenderTargetData(pBackBuffer, pSurfTemp);
我在显存的第一个代码块中获得了后台缓冲区表面数据吗?CreateOffscreenPlainSurface 中的一个参数是 D3DPOOL_SYSTEMMEM。我可以通过将此参数更改为 D3DPOOL_SCRATCH 或其他东西来复制视频内存中的表面吗?