gpt4 book ai didi

c# - WriteableBitmap(Ex) 与 DrawingContext 的性能对比

转载 作者:太空狗 更新时间:2023-10-29 23:15:15 25 4
gpt4 key购买 nike

我正在 WPF 中构建一个自定义 UI 框架,基本上我会尽可能多地放弃内置布局系统和控件。到目前为止,我一直在直接从 UIElement 分支出来,但由于我已经在进行测量、安排和渲染,我认为我可以通过“更接近于金属”(尤其是在布局/渲染方面)。在保持托管代码并且不害怕自己做肮脏的工作的情况下,可以达到多近?

我现在正在考虑一个原型(prototype)概念,我现在只有一个元素继承自 UIElement:一个 Root 对象,类似于一个精简的 Canvas,它“托管”我的布局引擎的其余部分,并将相关的 IInputElement 优势引入其中。从那时起,所有元素都将是完全自定义的对象,不会继承 WPF 中的任何内容,而是直接呈现到 Root 的 DrawingContext 中(在其 OnRender 方法中)。

现在我想知道拥有一个 WriteableBitmap 根元素并手动在其上绘制的相对性能,例如使用 WriteableBitmapEx为了方便。没有抗锯齿不是问题,自定义 HitTest 系统也不是问题。

我的想法主要是 WriteableBitmap(Ex) 没有任何 GPU 加速增益的特权,因此当需要重新绘制/转换大面积区域时会[慢很多]。

不过,我确实对“基于像素的渲染引擎中的引擎”有其他需求,所以我仍然对这方面的某些观点感兴趣。

有什么见解吗?

编辑:在这种情况下,SharpDX 怎么样?也许一旦我开始使用它,我还不如使用像 SharpDX 这样的 DirectX 包装器的 WinForms 解决方案(..或者..我想我真正应该做的是注册整个 C++ enchilada , 但不幸的是,我没有时间开始学习 that 在事情中间)..

最佳答案

WriteableBitmapEx 非常快,即使它只是在 CPU 上运行。它用于此高性能图表控件:http://www.scichart.com

您确实也应该检查 Direct3D。您可以获得非常好的性能,但这实际上取决于它的使用方式以及大多数绘制操作是否被缓存以及 CPU-GPU 通信是否尽可能畅通无阻。

关于c# - WriteableBitmap(Ex) 与 DrawingContext 的性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20719452/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com