我正在使用Microsoft XNA创建一个游戏应用程序,它将在一个面向公众的屏幕(投影仪)上运行,并在笔记本电脑屏幕上显示控件(Windows 7)。当第二个显示器不可用时,我只想要面向公众的屏幕显示在笔记本电脑的屏幕上。屏幕的比例是相同的。
是否有图书馆允许我们自动执行此操作,或者最糟糕的是更改设置?
答案 0 :(得分:3)
检查GraphicsAdapter.Adapters.Count()
如果有,请创建另一个表单,然后将其设置为第二个显示器(投影仪)。然后,对于每一帧,将面向公众的界面渲染到辅助监视器上,并将控件绘制到主要界面上。
要在表单之间切换,只需交换句柄:
graphics.GraphicsDevice.Present(form1.Handle);
否则,只绘制面向公众。
您可以在http://create.msdn.com/en-US/education/catalog/sample/winforms_series_1
了解如何在XNA中使用WinForms此解决方案假设有两件事:
答案 1 :(得分:0)
我能想到的最好方法是创建渲染服务器和客户端应用程序。
您可以让渲染服务器对两个单独的RenderTarget2D(或主屏幕,然后在rendertarget上)执行所有实际渲染,然后将一个rendertarget传输到客户端以渲染到辅助屏幕。这意味着客户端应用程序非常轻量级,并且只涉及将纹理渲染到全屏。
将数据传输到客户端应用程序可以通过多种方式完成,但在这种情况下,我个人最喜欢的是一个内存映射文件,用于将rendertarget的字节数据传输到第二个。否则应该使用tcp通信来提高性能。如果您需要有关提取字节数据或转移到其他应用程序的信息,只需评论我的帖子。