【问题标题】:Type initializer exception OpenTK and monogame类型初始化异常 OpenTK 和 monogame
【发布时间】:2013-11-16 11:50:19
【问题描述】:

我刚刚安装了 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……这是我唯一能指出的。有什么想法吗?

【问题讨论】:

  • 这意味着'OpenTK.Graphics.GraphicsMode'类的构造函数有错误,你可以访问该类的构造函数吗?
  • 这个答案可能会对你有所帮助。您的笔记本电脑可能不支持所需的 OpenGL 版本。 stackoverflow.com/questions/14558256/…

标签: c# visual-studio-2012 xna opentk monogame


【解决方案1】:

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

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

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

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


通过少量挖掘,没有看到堆栈跟踪(所以我几乎在猜测),我遇到了this potential culprit

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

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

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

【讨论】:

  • 好吧,我只是认为它是我的笔记本电脑 garphics 芯片...在我的电脑上一切正常
  • 对于后代,如果硬件加速不可用,OpenTK 现在将正确回退到软件加速上下文。这很慢,但可以避免崩溃。
【解决方案2】:

这个问题也发生在我身上,我不认为是 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 驱动程序)然后它开始工作.

【讨论】:

    猜你喜欢
    • 2012-09-07
    • 2012-07-07
    • 2013-04-03
    • 1970-01-01
    • 2012-02-01
    • 2011-04-16
    • 1970-01-01
    相关资源
    最近更新 更多