|
|
我想??ack buffer的?面?Υ娉梢??png的?D?n,不?加了以下的程式?後,?束程式??霈F"The D3D device has a non-zero reference count, meaning some objects were not released."的?息.
我查????出在GetBackBuffer的?r候,但是我不知道是什?原因?解?Q方法.
- void SaveBackBufferToPng(IDirect3DDevice9* pd3dDevice,WCHAR* szFilename)
- {
- LPDIRECT3DSURFACE9 m_TmpSurface=NULL;
- HRESULT hr;
- D3DDISPLAYMODE display;
- hr=pd3dDevice->GetDisplayMode(0,&display);
- hr=pd3dDevice->CreateOffscreenPlainSurface(display.Width,display.Height,D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT,&m_TmpSurface,NULL);//D3DFMT_A8R8G8B8
- hr=pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&m_TmpSurface);//<==key point
-
- D3DXSaveSurfaceToFile(szFilename,D3DXIFF_PNG,m_TmpSurface,NULL,NULL);//L"file.png"
- SAFE_RELEASE(m_TmpSurface);
- }
复制代码 |
|