c# - 如何使用 HelixViewport 提高渲染 3D 场景的性能
问题描述
我在 C# 和 WPF 中处理 3D 项目我使用 Helix-Toolkit 来显示不同的 3D 对象。我经常使用 Spheres,场景中也有 3D 文本。问题是性能,例如我在每次鼠标移动时都会计算场景中每个文本的位置,但是随着文本数量的增加,性能会下降。我还有一个 Slider 控件,可以在用户移动滑块时更改每个滑块值的球体半径,这也是性能问题。我不知道当所有视觉对象的值都更改时,有什么方法可以渲染场景,因为我认为现在的问题是对于每个更改的文本位置,3D 场景都会自动渲染其内容。
解决方案
首先,Helixtoolkit.Wpf 使用 WPF 内部 3D 引擎,所有的广告牌/点/线都是使用 CPU 绘制的。如果你有很多广告牌,你会很快体验到性能冲击。如果可能,尝试使用 Helixtoolkit.Wpf.SharpDX。
鼠标移动在 WPF 中有 100Hz 的频率,您可以尝试只计算每 2 个移动事件或 3 个移动事件的位置,以降低更新率。
我不确定你如何更新你的球体大小,通常你只需要更新变换来缩放你的球体,而不是每次都创建一个新的球体网格。
推荐阅读
- html - 创建我自己的 wordpress 主题并且无法访问样式文件
- vue.js - 如何使用子文件夹而不是子域获取 vuejs url 访问权限?
- java - 验证货币代码与允许值之一匹配
- python - Python在列表中转置多个数据帧
- node.js - Express 应用程序 - 委托访问
- typescript - 如何在 NestJS 中添加 DTO
- node.js - Express.js 服务器端事件实现 - 未发出事件
- amazon-web-services - 使用 CloudFormation 在 EC2 上设置 IIS
- c++ - 是临时实现转换应用于 const_cast 的操作数吗
- c++ - 在使用它创建二叉搜索树之前,必须始终对数组进行排序吗?如果是这样,原因是什么?