1

我运行了一个三显示器设置,我正在处理我决定的 MonoGame 中的图形演示(为什么不呢?让我们让它能够在所有显示器上最大化!)所以我使用了以下代码:

 graphics.IsFullScreen = false;
        graphics.ApplyChanges();
        //get dimensions of box that will cover all displays and set window to it.
        int xPos = System.Windows.Forms.Screen.AllScreens.OrderBy(x => x.Bounds.X).Select(x => x.Bounds.X).First();
        int yPos = System.Windows.Forms.Screen.AllScreens.OrderBy(y => y.Bounds.Y).Select(y => y.Bounds.Y).First();
        form.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        form.Location = new System.Drawing.Point(xPos, yPos);
        int xWidth = System.Windows.Forms.Screen.AllScreens.OrderByDescending(x => x.Bounds.X).Select(x => x.Bounds.X + x.Bounds.Width).First() - xPos;
        int yHeight = System.Windows.Forms.Screen.AllScreens.OrderByDescending(y => y.Bounds.Y).Select(y => y.Bounds.Y + y.Bounds.Height).First() - yPos;
        form.MaximumSize = new System.Drawing.Size(0, 0);

        form.Width = xWidth;
        form.Height = yHeight;
      //  graphics.PreferredBackBufferWidth = xWidth;
     //   graphics.PreferredBackBufferHeight = yHeight;
        graphics.ApplyChanges();
        Properties.Settings.Default.FakeFullScreen = true;
    }

当然还有第二个功能来撤消它。

当我将其中一个监视器设置在其他监视器之上进行测试时,这工作正常,但是当我设置 Windows 布局以将它们全部并排放置(提供 5760x1080 的分辨率)时,我在图形上抛出了一个无效的参数错误。应用更改()。所以我注释掉了图形代码并手动设置了表单宽度,发现显然我不允许我的表单宽度超过 4096 像素。

有没有解决的办法?我对所有建议持开放态度,包括并排绘制多个窗口,但我需要一些代码来向我展示如何定位第二种形式。

谢谢,麻烦您了。

4

1 回答 1

1

这是 DirectX 9/Windows Phone 7 通过使用“Reach Graphics Profile”将纹理尺寸限制为 4096 x 4096 的限制。

最终显示的图像是所有 spritebatch 合成的单个纹理,大小不能超过最大纹理大小。

要更正此问题:

  1. 确保您的视频卡支持更大的纹理:运行 dxdiag.exe(大多数现代视频卡都支持,只要有足够的内存)。
  2. 启用“ hidef ”配置文件以允许完整的 DX9、DX10 和 DX11 模式。

要启用“隐藏”,请使用以下代码Game1.cs修改您的构造函数:

public Game1()
        {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
            graphics.GraphicsProfile = GraphicsProfile.HiDef;
            graphics.ApplyChanges();
            // any additional code goes here
        }

另一种方法是使用 OpenGL,它会忽略图形配置文件并为您的视频卡使用最佳版本。

于 2019-09-03T17:49:55.343 回答