1

我刚刚安装了 MonoGame 和 OpenTK 1.0,在 Visual Studio 2012 中我创建了一个类型为“Windows OpenGL Game”的新项目......但是当我运行该项目时,我收到以下错误:

The type initializer for 'OpenTK.Graphics.GraphicsMode' threw an exception.

错误就在这一行上(构造函数,在 base() 上)

public Game1()
    : base() 
{
    graphics = new GraphicsDeviceManager(this);
    Content.RootDirectory = "Content";
}

我的笔记本电脑有intel oboard graphics 3000,我认为它支持OpenGL……这是我唯一能指出的。有任何想法吗?

4

2 回答 2

1

我们可以查看源代码并找到未处理异常的位置。“类型初始化器”基本上是指静态构造函数:

static GraphicsMode()
{
    lock (SyncRoot)
    {
        implementation = Platform.Factory.Default.CreateGraphicsMode();
    }
}

不幸的是,挖掘CreateGraphicsMode并没有发现任何明显的异常来源。

您现在应该做的是尝试获取该异常的堆栈跟踪,并找出它来自内部的位置CreateGraphicsMode。当异常未处理时,调试器应该为您提供此信息。


通过少量挖掘,没有看到堆栈跟踪(所以我几乎在猜测),我遇到了这个潜在的罪魁祸首

throw new GraphicsModeException(
    "No GraphicsMode available. This should never happen, please report a bug at http://www.opentk.com");

当然,这非常无益。虽然,根据它的位置,它似乎表明它找不到合适的图形模式。

在这个阶段,我认为最好从源代码构建 MonoGame 和 OpenTK,以便您可以使用调试器准确查看它们在做什么。

于 2013-07-21T14:55:55.490 回答
0

这个问题也发生在我身上,我不相信这是 MonoGame 的源代码问题。

A)您需要确保已安装 openTK,http://www.opentk.com/

B)就像craftworkgames所说,你的机器(我假设是笔记本电脑)不支持OpenGL。我在我的 Sufrace Pro 上遇到了这个问题,必须将我的英特尔驱动程序更新到最新版本(我使用 guru3d.com 和 www.guru3d.com/files_categories/videocards_intel_graphics_drivers.html 此时安装了 15.31 驱动程序)然后它开始工作.

于 2013-11-16T03:50:19.420 回答