0

我想在显卡内存中复制一个表面(它是否称为视频内存?),这就是我获得后缓冲表面的方式:

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

4

0 回答 0