首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF 3D视频内存效率

WPF 3D视频内存效率
EN

Stack Overflow用户
提问于 2009-12-23 14:18:33
回答 1查看 603关注 0票数 1

我会尽我所能地解释我的情况,如果不是太清楚,很抱歉…

我有一个Viewport3D,它包含一些像大晶体一样的大3d矩形。

当用户单击其中一个晶体时,我使用ImageBrush将新材料添加到用户单击的位置的晶体中。然后,我迭代位图列表(List<BitmapImage>集合),并在每一帧更新ImageBrush,以便在3D晶体上创建动画。

这个效果很好,我在水晶上播放了多达5种不同的效果,但在分析我的应用程序后,我发现由于mipmap(我想)和3d渲染的方式,我的视频内存跳跃到屋顶!!

根据我的计算,如果我有一个75帧的动画,乘以每像素4字节的400x400,并且有大约5个不同的动画堆叠在一起,你可以看到这是如何变大的:)

75 * 400 * 400 *4*5= ~250MB

这是一个问题,不仅是因为大小,而且BitmapImages会一直留在显存中,直到我将它们设为空,这是非常恼人的,性能成本也很高。

我解决这个问题的想法是,从使用List<BitmapImage>集合改为使用List<Byte[]>,而不是更新ImageSource,而是尝试使用WriteableBitmap将字节写入其中。

问题是我不知道如何从PNG文件中读取字节,然后创建一个WriteableBitmap,然后一遍又一遍地高效地将这些字节写入其中。

有谁能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2009-12-24 00:29:36

WriteableBitmap实际上在性能上相当差,尽管它占用了脏区域。尝试使用InteropBitmap。我在这里已经准备好了一个类:

http://silverlightviewport.codeplex.com/SourceControl/changeset/view/33100#809062

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1950983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档