DIRECTX 九 SDK里面有没有屏幕抓图的例子
DIRECTX 9 SDK里面有没有屏幕抓图的例子?
DIRECTX 9 SDK里面有没有屏幕抓图的例子?如果没有哪里可以找到?
------解决方案--------------------
1,Getbackbuffer(...)
2,CreateSurface (d3dpool_system)
3,StretchRect backbuffer -> ysytembuffer
4,D3DXSaveSurfaceToFile
------解决方案--------------------
void CrD3DWndCL::RenderToFileM( const CString &fileName, CString *pOrgFileName, BOOL bClear, D3DXIMAGE_FILEFORMAT format )
{
IDirect3DSurface9 *pOldSurface = NULL;
IDirect3DSurface9 *pSurfOldDepthStencil = NULL;
IDirect3DSurface9 *pNewSurface = NULL;
IDirect3DDevice9 *pd3dDevice = graphicsM.GetDeviceCOM();
IDirect3DTexture9 *pTex = NULL;
HRESULT hr;
ASSERT( pd3dDevice != NULL );
if( pOrgFileName == NULL )
{
CRect wndRc;
GetClientRect( &wndRc );
hr = pd3dDevice->CreateTexture( wndRc.Width(), wndRc.Height(), 1,
D3DUSAGE_RENDERTARGET,
D3DFMT_A8R8G8B8,
D3DPOOL_DEFAULT, &pTex, NULL );
if( FAILED( hr ) )
{
TRACE( "创建纹理失败!\n" );
return;
}
}
else
{
CString orgFile( *pOrgFileName );
hr = D3DXCreateTextureFromFileEx( pd3dDevice, orgFile, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_FROM_FILE,
D3DUSAGE_RENDERTARGET,D3DFMT_UNKNOWN, D3DPOOL_DEFAULT,D3DX_FILTER_LINEAR, D3DX_FILTER_LINEAR, 0,0,0, &pTex);
if( FAILED( hr ) )
{
TRACE( "加载纹理图片(%s)失败!\n", orgFile );
return;
}
}
ASSERT( pTex != NULL );
pTex->GetSurfaceLevel( 0, &pNewSurface );
ASSERT( pNewSurface != NULL );
setLightM( );
DIRECTX 9 SDK里面有没有屏幕抓图的例子?如果没有哪里可以找到?
------解决方案--------------------
1,Getbackbuffer(...)
2,CreateSurface (d3dpool_system)
3,StretchRect backbuffer -> ysytembuffer
4,D3DXSaveSurfaceToFile
------解决方案--------------------
void CrD3DWndCL::RenderToFileM( const CString &fileName, CString *pOrgFileName, BOOL bClear, D3DXIMAGE_FILEFORMAT format )
{
IDirect3DSurface9 *pOldSurface = NULL;
IDirect3DSurface9 *pSurfOldDepthStencil = NULL;
IDirect3DSurface9 *pNewSurface = NULL;
IDirect3DDevice9 *pd3dDevice = graphicsM.GetDeviceCOM();
IDirect3DTexture9 *pTex = NULL;
HRESULT hr;
ASSERT( pd3dDevice != NULL );
if( pOrgFileName == NULL )
{
CRect wndRc;
GetClientRect( &wndRc );
hr = pd3dDevice->CreateTexture( wndRc.Width(), wndRc.Height(), 1,
D3DUSAGE_RENDERTARGET,
D3DFMT_A8R8G8B8,
D3DPOOL_DEFAULT, &pTex, NULL );
if( FAILED( hr ) )
{
TRACE( "创建纹理失败!\n" );
return;
}
}
else
{
CString orgFile( *pOrgFileName );
hr = D3DXCreateTextureFromFileEx( pd3dDevice, orgFile, D3DX_DEFAULT, D3DX_DEFAULT, D3DX_FROM_FILE,
D3DUSAGE_RENDERTARGET,D3DFMT_UNKNOWN, D3DPOOL_DEFAULT,D3DX_FILTER_LINEAR, D3DX_FILTER_LINEAR, 0,0,0, &pTex);
if( FAILED( hr ) )
{
TRACE( "加载纹理图片(%s)失败!\n", orgFile );
return;
}
}
ASSERT( pTex != NULL );
pTex->GetSurfaceLevel( 0, &pNewSurface );
ASSERT( pNewSurface != NULL );
setLightM( );