【发布时间】:2010-09-07 08:13:52
【问题描述】:
我正在开发一个模拟器,它依赖于 OpenGL 将符号、地图、移动项目...显示为图层/纹理。
我们正在研究在模拟器中引入多点触控支持的不同选项。
WPF 是其中一种选择,因为它可以为 GUI 开发提供有趣的生产力因素。已构建原型,但不符合我们的性能要求。
我正在寻找提高性能的方法或任何可以让我们重回正轨的建议。
当前系统是基于
使用 C++ 和 OpenGL 编写的主/托管应用程序,可驱动(启动、调度、停止...)WPF 部分并提供上下文信息
支持多点触控的 WPF 应用程序,可根据主上下文和用户输入做出相应反应
用于在 Main/hosting 应用程序和 WPF 应用程序之间进行通信的 COM 组件
由特定抽象层管理的多点触控输入(处理 TUIO 或专有事件)
主机应用调度程序每 xx 毫秒(xx
当前 WPF 呈现其位图的方式依赖于 RenderTargetBitmap。渲染时间大约为 500 毫秒,这比我们希望的速度至少慢了 10 倍,并且消耗了过多的 CPU(在这种情况下,WPF 使用了软件管道)。
所以,我的问题是:
有没有一种方法可以更快地呈现 WPF 窗口的位图,同时保持其所有功能(例如透明度)?我知道 gdi32 API,但它似乎不支持透明度之类的东西,我不知道我们是否可以获得任何性能
当前架构看起来不是最佳选择,因为执行了两次“渲染”(WPF 应用程序本身的渲染和位图的渲染)。 WPF 是否有可能在某个虚拟内存空间中渲染一次,该虚拟内存空间可以由 Main/hosting 应用程序直接读取?
【问题讨论】:
-
你为什么不能选择一些多点触控框架呢?或者只使用 WPF 和其他 MS 框架而不需要“主机”应用程序。