我在c#中使用OpenGL和taframework。我为openGL创建了一个不包括windows窗体的窗口,我不知道如何将这个窗口集成到windows窗体中。
[STAThread]
static void Main()
{
Glut.glutInit();
Glut.glutInitDisplayMode(Glut.GLUT_DOUBLE | Glut.GLUT_RGB | Glut.GLUT_DEPTH);
Glut.glutGetWindow();
Glut.glutInitWindowSize(600, 600);
Glut.glutInitWindowPosition(700, 100);
Glut.glutCreateWindow("Lang Yuzer Robot Arm");
Gl.glEnable(Gl.GL_COLOR_MATERIAL);
Gl.glEnable(Gl.GL_LIGHTING);
Gl.glEnable(Gl.GL_LIGHT0);
Gl.glEnable(Gl.GL_DEPTH_TEST);
Gl.glEnable(Gl.GL_NORMALIZE);
Gl.glEnable(Gl.GL_CULL_FACE);
Glut.glutDisplayFunc(Form1.myDisplay);
Glut.glutReshapeFunc(Form1.myReshape);
Glut.glutIdleFunc(Form1.myIdle);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
Glut.glutMainLoop();
}
}
GLUT是一个窗口工具包;WinForms是一个不同的窗口工具箱。除非GLUT允许修复(不太可能),否则没有直接的方法将两者结合起来。
最好的解决方案是使用OpenTK.GLControl
,它是跨平台的并且维护良好。NuGet版本可在此获得:https://www.nuget.org/packages/OpenTK.GLControl/
Tao.SimpleGlControl
,它仅用于windows并且不再维护。如果不弄乱窗口句柄,我建议使用OpenTK,它使用了Tao框架。这个库有一个OpenGLControl,可以将OpenGL图形集成到windows窗体中。