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 が発生します。手がかりはありますか?OS: Win7 プロ 64

4

1 に答える 1

0

その前に OpenGL レンダー コンテキストを作成せずに OpenGL 関数を呼び出すことはできません。コードに未定義の動作があります。

ベスト プラクティスは次のとおりです。

  1. Windows フォーム アプリケーションを作成します。
  2. OpenGL レンダー コンテキストを作成します。
  3. レンダリングやその他の操作に必要な OpenGL 関数を呼び出します。
于 2012-09-23T19:26:52.870 に答える