Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms 使用D3D10/11和MDI窗口的性能_Winforms_Performance_Mdi_Slimdx_Direct2d - Fatal编程技术网

Winforms 使用D3D10/11和MDI窗口的性能

Winforms 使用D3D10/11和MDI窗口的性能,winforms,performance,mdi,slimdx,direct2d,Winforms,Performance,Mdi,Slimdx,Direct2d,我正在开发一个MDI应用程序,它可能包含很多(>40)实时(30fps)更新图;每个图形都可能在其中渲染三维几何体。我曾尝试在每个窗口上使用SlimDX(在每个窗口上)使用Direct2D,但当添加超过16个窗口时,性能会下降得非常糟糕。有谁对此有经验,谁的反馈可能有用 我目前使用的是D3D10/11API,根据文档,每个窗口有一个交换链。在D3D9文档中,您可以在演示之前切换窗口,这是推荐的用法。我应该换成D3D9吗?这可能是交换链转换问题吗 如果这不是一个交换链问题,对我来说,跳过D2D,

我正在开发一个MDI应用程序,它可能包含很多(>40)实时(30fps)更新图;每个图形都可能在其中渲染三维几何体。我曾尝试在每个窗口上使用SlimDX(在每个窗口上)使用Direct2D,但当添加超过16个窗口时,性能会下降得非常糟糕。有谁对此有经验,谁的反馈可能有用

  • 我目前使用的是D3D10/11API,根据文档,每个窗口有一个交换链。在D3D9文档中,您可以在演示之前切换窗口,这是推荐的用法。我应该换成D3D9吗?这可能是交换链转换问题吗
  • 如果这不是一个交换链问题,对我来说,跳过D2D,只管理自己的顶点缓冲区并使用D3D渲染会更好吗

问候

将一个大窗口/上下文划分为>40个单元格,每个单元格中绘制一个图形,您会获得什么样的性能(您可以使用剪切测试强制单元格边界)

如果效果不佳,则需要降低复杂性或以某种方式优化绘图


如果一个窗口能足够快地渲染所有的内容,那么考虑一下这样做——一个窗口。实现自己的最大化/可拖动拆分器行为并不难。

是的,我正在这么做。[这是一个可以检测许多不同模块(计时、堆分配等)上峰值的系统,因此需要在屏幕上显示大量窗口来找出哪个系统行为不当。]是的,这是计划B。即使在实施之前,我想我可以安全地假设它不会对性能造成影响。但这样一来,我就失去了窗口的内置细节,比如调整单个图形的大小、内置上下文菜单、关闭/最小化窗口&我需要的最重要的一个窗口,每个窗口都有一个滚动条来查看历史。我必须重新编写每个功能的控制盘…@RCaloca:您可以尝试使用Windows内置的滚动条和按钮控件来实现至少部分功能。来自子控件的复杂剪辑可能会或可能不会导致像许多单独上下文那样多的性能命中。