私は Tao.FreeGlut 2.1.0 でウィンドウを初期化し、OpenTK 1.1 で drawind をしようとしているので、簡単なプログラムを作成します。
public static void Main()
{
Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_DOUBLE | Glut.GLUT_RGBA);
Glut.glutInitWindowSize(1024, 768);
Glut.glutInitWindowPosition(100, 100);
Glut.glutCreateWindow("Test");
Glut.glutDisplayFunc(RenderScene);
GL.ClearColor(0.0f, 0.0f, 0.0f, 0.0f);
Glut.glutMainLoop();
}
public static void RenderScene()
{
GL.Clear(ClearBufferMask.ColorBufferBit);
Glut.glutSwapBuffers();
}
しかし、GL.ClearColor
呼び出し時に null ref 例外でクラッシュします。これは、OpenTK が独自の OpenGL コンテキストを格納し、Glut によって作成され、適切に初期化されていないコンテキストと等しくないために発生すると思います。Glut からコンテキストを取得する方法が見つからなかったので、次のようなことを試みました。
IWindowInfo window = Utilities.CreateWindowsWindowInfo(Glut.glutGetWindowData());
GraphicsContext context = new GraphicsContext(GraphicsMode.Default, window);
context.MakeCurrent(window);
context.LoadAll();
そして今、コンテキストの作成時にクラッシュしますが、ウィンドウは OpenTK に正しくありません。
それを修正してGlutをOpenTKで使用する方法はありますか? または、Glut を使用して、OpenTK メソッドでウィンドウとコンテキストを作成してはいけませんか?