如何复制显卡内存中的表面?

时间:2013-09-11 08:42:50

标签: directx direct3d directx-9

我想在显卡内存中复制一个表面(它叫做视频内存吗?),这就是我得到后缓冲区表面的方法:

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或其他东西来复制视频内存中的表面吗?

0 个答案:

没有答案