游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1872|回复: 1

?於D3DXSaveSurfaceToFile的memory leak

[复制链接]

414

主题

611

帖子

621

积分

高级会员

Rank: 4

积分
621
发表于 2008-5-5 11:56:00 | 显示全部楼层 |阅读模式
我想??ack buffer的?面?Υ娉梢??png的?D?n,不?加了以下的程式?後,?束程式??霈F"The D3D device has a non-zero reference count, meaning some objects were not released."的?息.
我查????出在GetBackBuffer的?r候,但是我不知道是什?原因?解?Q方法.


  1. void SaveBackBufferToPng(IDirect3DDevice9* pd3dDevice,WCHAR* szFilename)
  2. {
  3.         LPDIRECT3DSURFACE9 m_TmpSurface=NULL;
  4.         HRESULT hr;
  5.         D3DDISPLAYMODE display;

  6.         hr=pd3dDevice->GetDisplayMode(0,&display);
  7.         hr=pd3dDevice->CreateOffscreenPlainSurface(display.Width,display.Height,D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT,&m_TmpSurface,NULL);//D3DFMT_A8R8G8B8
  8.         hr=pd3dDevice->GetBackBuffer(0,0,D3DBACKBUFFER_TYPE_MONO,&m_TmpSurface);//<==key point
  9.        
  10.         D3DXSaveSurfaceToFile(szFilename,D3DXIFF_PNG,m_TmpSurface,NULL,NULL);//L"file.png"

  11.         SAFE_RELEASE(m_TmpSurface);
  12. }
复制代码

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2008-5-5 12:10:00 | 显示全部楼层

Re: ?於D3DXSaveSurfaceToFile的memory leak


hr=pd3dDevice->CreateOffscreenPlainSurface(
display.Width,
display.Height,
D3DFMT_A8R8G8B8,D3DPOOL_DEFAULT,
&m_TmpSurface,  //<------------???你多建了????]?放 ..
NULL);//D3DFMT_A8R8G8B8

接下?砟阌帜?_TmpSurface去接BackSurface
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-22 14:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表