WriteableBitmap(Ex)与DrawingContext的性能

 双眼皮的猪猪2012 发布于 2023-02-08 18:04

我正在WPF中构建一个自定义UI框架,在这里我基本上放弃了尽可能多的内置布局系统和控件。到目前为止,我一直没有UIElement直接涉足,但是由于我已经在进行测量,整理和渲染自己,所以我认为我可以通过甚至“更接近金属”来减少WPF的更多遗产(尤其是当它来的时候)进行布局/渲染)。在保持托管代码的同时又不害怕自己做肮脏的工作的情况下,有多接近?

我现在正在一边玩一个原型概念,在这个概念中,我只有一个元素继承自UIElement:一个Root类似于剥离的对象Canvas,它“托管”了我的其余布局引擎,并将相关的IInputElement利益引入其中。从那时起,所有元素将完全是自定义对象,而不是从WPF中的任何内容继承而来,而是直接呈现到DrawingContextRoot中(在其OnRender方法中)。

现在,我想知道拥有WriteableBitmap根元素并手动使用它的相对性能,例如,为了方便起见,使用WriteableBitmapEx。没有抗锯齿不是问题,定制命中测试系统也不是问题。

我的想法主要是WriteableBitmap(Ex)不具有任何GPU加速增益的特权,因此,当需要重绘/变换大面积区域时,WriteableBitmap(Ex)的速度将大大降低。

但是,对于“基于像素的渲染引擎”,我确实还有其他需求,因此我仍然对此感兴趣。

有什么见解吗?

编辑:在这种情况下,SharpDX呢?也许曾经的我在这我还不如去与一个DirectX包装像SharpDX一个WinForms的解决方案(..或..我想我真正应该做的是注册了整个C ++安吉拉卷,但不幸的是我没有有时间开始学习这些东西。..

1 个回答
  • 即使在CPU上运行,WriteableBitmapEx也相当快。此高性能图表控件中使用了它:http : //www.scichart.com

    您还应该确实检出Direct3D。您可以获得非常好的性能,但这实际上取决于它的使用方式以及大多数绘图操作是否已缓存,并且CPU-GPU通讯尽可能地方便。

    2023-02-08 18:06 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有