0

考虑以下代码:

using System.Runtime.InteropServices;

namespace GLTest
{
  class Program
  {
    [DllImport("opengl32.dll")]
    protected static extern uint glGetError();

    ~Program()
    {
      GLCall();
    }

    public void GLCall()
    {
      glGetError();
    }

    static void Main(string[] args)
    {
      var p = new Program();
      p.GLCall();
    }
  }
}

当从 ~Program 启动 GLCall 时,它会导致 AccessViolationException。有什么线索吗?操作系统:Win7 Pro 64

4

1 回答 1

0

如果不创建任何 OpenGL 渲染上下文,就无法调用 OpenGL 函数。代码中有未定义的行为。

最佳做法是:

  1. 创建一个 WindowsForm 应用程序。
  2. 创建一个 OpenGL 渲染上下文。
  3. 调用渲染或其他操作所需的 OpenGL 函数。
于 2012-09-23T19:26:52.870 回答