C# 我可以让OpenTK和Tao.FreeGlut一起工作吗?
我正在尝试使用Tao.FreeGlut 2.1.0初始化窗口,并使用OpenTK 1.1初始化drawind,因此我制作了一个简单的程序:C# 我可以让OpenTK和Tao.FreeGlut一起工作吗?,c#,opengl,initialization,opentk,tao-framework,C#,Opengl,Initialization,Opentk,Tao Framework,我正在尝试使用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.glutInitWindowPos
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方法创建窗口和上下文吗?是的,这是可能的。从: 请注意,在调用
new GraphicsContext()
时,必须创建GLUT上下文并将其设置为当前上下文。根据,在glutCreateWindow()
返回之后就是这种情况
Glut.glutCreateWindow("Test");
// Initialize OpenTK using the current GLUT context
var opentk_context = new GraphicsContext(ContextHandle.Zero, null);
// You can now call GL functions freely
GL.ClearColor(0.0f, 0.0f, 0.0f, 0.0f);