C#:控制中的Direct3D,辅助监视器上的全屏 - 最好的方法是什么?

时间:2010-03-03 22:24:46

标签: c# controls fullscreen direct3d

我正在开发一个需要在Windows窗体的控件中使用Direct3D的C#应用​​程序, 和(同时)在辅助监视器上全屏。

基本上,我希望在一个屏幕上有一个Windows Forms应用程序,用户界面来控制图形,我想在一个小型控件中显示预览图形,以及全屏超级超级图形全屏显示在辅助监视器上。

最好的方法是什么?

(例如,我知道XNA可以在Windows窗体控件中呈现,但是是否可以在另一台显示器上添加全屏窗口?)

3 个答案:

答案 0 :(得分:1)

AFAIK执行此操作的唯一方法是创建2个完整的Direct3DDevices。您在监视器2上创建一个全屏,然后将另一个创建为普通的窗口设备。这应该做你想要的。但请注意,您将无法在两台设备之间共享资源〜(它们将需要在每台设备上创建),并且性能将比在一台设备上拥有2个全屏交换链更糟糕。

答案 1 :(得分:1)

我知道你说Windows Forms,但我仍然建议你使用WPF。优点是您可以在两个窗口中使用相同的技术。

WPF是传统Windows窗体的非常好的替代品。它还可以激发您设计更好的解决方案,更好地分离模型和视图。

另一方面,WPF全部呈现在directx之上。它为您提供了一个很好的3D引擎,您可以轻松实现所有类型的操作,例如,请查看以下链接:

http://www.codegod.de/webappcodegod/render-3ds-3d-models-with-wpf-and-xaml-AID433.aspx

http://www.wpftutorial.net/IntroductionTo3D.html

答案 2 :(得分:0)

你不能拥有真正的全屏(就我所记得的那样),但你可以制作一个无边框的窗口,然后你可以制作与屏幕本身一样大的窗口。它看起来就像是全屏,但你仍然会受到窗口模式性能损失的影响。 (他们是可以接受的)