HRESULT CD3D9ExUtils::Render (void* pDst[3], SBufferInfo* pInfo) { HRESULT hResult = E_FAIL; if (!pInfo) return E_FAIL; if (m_nWidth != pInfo->UsrData.sSystemBuffer.iWidth || m_nHeight != pInfo->UsrData.sSystemBuffer.iHeight) { m_nWidth = pInfo->UsrData.sSystemBuffer.iWidth; m_nHeight = pInfo->UsrData.sSystemBuffer.iHeight; MoveWindow(m_hWnd,0,0,pInfo->UsrData.sSystemBuffer.iWidth,pInfo->UsrData.sSystemBuffer.iHeight,true); SAFE_RELEASE (m_lpD3D9RawSurfaceShare); SAFE_RELEASE (m_lpD3D9Device); } hResult = InitResource (NULL, pInfo); if (SUCCEEDED (hResult)) hResult = Dump2Surface (pDst, m_lpD3D9RawSurfaceShare, pInfo->UsrData.sSystemBuffer.iWidth, pInfo->UsrData.sSystemBuffer.iHeight, pInfo->UsrData.sSystemBuffer.iStride); if (SUCCEEDED (hResult)) { IDirect3DSurface9* pBackBuffer = NULL; hResult = m_lpD3D9Device->GetBackBuffer (0, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer); hResult = m_lpD3D9Device->StretchRect (m_lpD3D9RawSurfaceShare, NULL, pBackBuffer, NULL, D3DTEXF_NONE); hResult = m_lpD3D9Device->PresentEx (0, 0, NULL, NULL, 0); } return hResult; }
HRESULT CD3D9Utils::Render (void* pDst[3], SBufferInfo* pInfo) { HRESULT hResult = E_FAIL; hResult = InitResource (NULL, pInfo); if (SUCCEEDED (hResult)) hResult = Dump2Surface (pDst, m_lpD3D9RawSurfaceShare, pInfo->UsrData.sSystemBuffer.iWidth, pInfo->UsrData.sSystemBuffer.iHeight, pInfo->UsrData.sSystemBuffer.iStride); if (SUCCEEDED (hResult)) { IDirect3DSurface9* pBackBuffer = NULL; hResult = m_lpD3D9Device->GetBackBuffer (0, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer); hResult = m_lpD3D9Device->StretchRect (m_lpD3D9RawSurfaceShare, NULL, pBackBuffer, NULL, D3DTEXF_NONE); hResult = m_lpD3D9Device->Present (0, 0, NULL, NULL); } return hResult; }
HRESULT CD3D9ExUtils::Render (void* pDst[3], SBufferInfo* pInfo) { HRESULT hResult = E_FAIL; EBufferProperty eBufferProperty = pInfo->eBufferProperty; if (eBufferProperty == BUFFER_HOST) { hResult = InitResource (NULL, pInfo); if (SUCCEEDED (hResult)) hResult = Dump2Surface (pDst, m_lpD3D9RawSurfaceShare, pInfo->UsrData.sSystemBuffer.iWidth, pInfo->UsrData.sSystemBuffer.iHeight, pInfo->UsrData.sSystemBuffer.iStride); } else if (eBufferProperty == BUFFER_DEVICE) { VOID* pSharedHandle = pDst[0]; hResult = InitResource (pSharedHandle, pInfo); } if (SUCCEEDED (hResult)) { IDirect3DSurface9* pBackBuffer = NULL; hResult = m_lpD3D9Device->GetBackBuffer (0, 0, D3DBACKBUFFER_TYPE_MONO, &pBackBuffer); hResult = m_lpD3D9Device->StretchRect (m_lpD3D9RawSurfaceShare, NULL, pBackBuffer, NULL, D3DTEXF_NONE); hResult = m_lpD3D9Device->PresentEx (0, 0, NULL, NULL, 0); } return hResult; }