2013-07-20 32 views
1

我刚刚安装了MonoGame和OpenTK 1.0,并在Visual Studio 2012中做了一个'Windows OpenGL Game'类型的新项目......但是当我运行该项目时,出现以下错误:类型初始值设定例外OpenTK和monogame

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

的错误是正确的这一行(consturctor,在底座上())

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

我的电脑有英特尔oboard显卡3000,我认为它支持OpenGL ...那是我唯一可以指向。有任何想法吗?

+0

那么这意味着在'OpenTK.Graphics.GraphicsMode'类的构造函数中有一个错误,你有权访问该类的构造函数吗? – Cyral

+1

这个答案可能会帮助你。您的笔记本电脑可能不支持所需的OpenGL版本。 http://stackoverflow.com/questions/14558256/unable-to-find-an-entry-point-named-glbindframebuffer-in-dll-opengl32-dl​​l-i – craftworkgames

回答

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,这样就可以使用调试器来看看他们正在做的正是什么。

+0

以及我只是想它的我的笔记本电脑加速芯片......在我的电脑上一切正常 –

+0

对于后人,如果硬件加速不可用,OpenTK现在可以正确回退到软件加速的上下文。这很慢,但它避免了崩溃。 –

0

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

A)你需要确保openTK是insstalled,http://www.opentk.com/

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

相关问题