请教一个 d2d 的内存释放问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Game Engines
Unreal Engine
MyCryENGINE
chinuno
V2EX    游戏开发

请教一个 d2d 的内存释放问题

  •  
  •   chinuno 2016-01-28 14:18:06 +08:00 4360 次点击
    这是一个创建于 3610 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我 d2d 用 RenderTarget 的 CreateBitmapFromWicBitmap 拿到 d2dbitmap 的指针。然后用完之后没法释放掉内存。
    我的想法是把 bitmap 给 release 掉后应该是能够释放掉图片的内存的,但是试了之后发现内存没释放掉。一直到把 RenderTarget 给 release 掉之后内存才释放掉。
    测试加载 1000 次图片后内存就飙到 1G 了。真的后面游戏要加载的图片肯定不止 1000 次

    我现在的做法是。封装了一个绘制用的类。然后创建一个全局的绘制对象用于绘制
    加载图片的时候有成员函数通过类的成员 m_pRenderTarget->CreateBitmapFromWicBitmap()拿到 bitmap 的指针。然后后续绘制的时候通过 m_pRenderTarget->DrawBitmap()来绘制。

    对内存的操作流程这样
    1.图片文件读到内存中
    2.wic 解析图片
    3.d2d 创建 bitmap
    4.释放 wic
    5.释放图片文件内存

    然后 bitmap->Release()发现内存不减这样

    或者是不是我整个操作就是不对的?各位开发者用 d2d 渲染图片都是怎么做的?

    第 1 条附言    2016-01-28 17:19:46 +08:00
    bitmap 占用的应该是显存资源。 Release 掉后释放显存,所以内存看没有减少
    猜想可能是 wic 的 cache 机制导致的。一开始内存增长速度也慢,到后面增长速度开始爆炸。
    第 2 条附言    2016-01-28 17:40:26 +08:00
    额。。发现加载后马上释放 bitmap 后内存不会爆炸。应该是引用计数自动回收?还是说显存不够用之后往内存这里加了?
    目前尚无回复
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5256 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 07:49 PVG 15:49 LAX 23:49 JFK 02:49
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86