DIRECTX 9 SDK里面有没有屏幕抓图的例子? DIRECTX 9 SDK里面有没有屏幕抓图的例子?如果没有哪里可以找到? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://bbs.csdn.net/topics/60461454以前有人问过 1,Getbackbuffer(...)2,CreateSurface (d3dpool_system)3,StretchRect backbuffer -> ysytembuffer4,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( ); if( SUCCEEDED( pd3dDevice->BeginScene() ) ) { pd3dDevice->GetRenderTarget( 0, &pOldSurface ); pd3dDevice->GetDepthStencilSurface( &pSurfOldDepthStencil ); pd3dDevice->SetRenderTarget( 0, pNewSurface ); DWORD flags = D3DCLEAR_ZBUFFER; if( bClear ) { flags |= D3DCLEAR_TARGET; } pd3dDevice->Clear( 0, NULL, flags, bgClrM, 1.0f, 0 ); pd3dDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_TRUE ); if( pWndMgrM != NULL ) { pWndMgrM->OnRenderM(); } pd3dDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_FALSE ); renderTextM(); pNewSurface->Release(); D3DXSaveTextureToFile( fileName, format, pTex, NULL ); pd3dDevice->SetDepthStencilSurface( pSurfOldDepthStencil ); pd3dDevice->SetRenderTarget( 0, pOldSurface ); pd3dDevice->EndScene(); } pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE ); pTex->Release();} 自己写个filter,抓取里面的帧就可以了 求金山词霸“生词本”的实现方法 MFC启动时候的m_pMainWnd是怎么加上去的? 在vc中建立一个基于MFC的对话框,如何让opengl绘的图显示在对话框的右半部分? 如何开IE窗口? 请高手帮解决一下吧,关于mdi中获取视图指针的问题? 动画处理的问题 大家看看 关于listview的一个问题 一个很弱的问题 关于radio button 简单问题,解决即给分! 求救:YUV转为灰度图的功能写出来了,就是调用的时候无法写入到输出缓存pGrayBuf中.在线等~~~~~~~ vc 2005 怎样添加整个解决方案的包含目录和库目录? 请教使用opencv识别害虫的方法
以前有人问过
2,CreateSurface (d3dpool_system)
3,StretchRect backbuffer -> ysytembuffer
4,D3DXSaveSurfaceToFile
{
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( );
if( SUCCEEDED( pd3dDevice->BeginScene() ) )
{
pd3dDevice->GetRenderTarget( 0, &pOldSurface );
pd3dDevice->GetDepthStencilSurface( &pSurfOldDepthStencil ); pd3dDevice->SetRenderTarget( 0, pNewSurface );
DWORD flags = D3DCLEAR_ZBUFFER;
if( bClear )
{
flags |= D3DCLEAR_TARGET;
}
pd3dDevice->Clear( 0, NULL, flags, bgClrM, 1.0f, 0 );
pd3dDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_TRUE ); if( pWndMgrM != NULL )
{
pWndMgrM->OnRenderM();
} pd3dDevice->SetRenderState( D3DRS_ZENABLE, D3DZB_FALSE ); renderTextM();
pNewSurface->Release(); D3DXSaveTextureToFile( fileName, format, pTex, NULL );
pd3dDevice->SetDepthStencilSurface( pSurfOldDepthStencil ); pd3dDevice->SetRenderTarget( 0, pOldSurface ); pd3dDevice->EndScene();
}
pd3dDevice->SetRenderState( D3DRS_LIGHTING, FALSE ); pTex->Release();
}