Как интегрировать окно OpenGL в приложении Windows Form
Я использую OpenGL и TaoFramework в C# . Я создал окно для 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();
}
}
2 ответа
GLUT - это оконный инструментарий; WinForms - это другой оконный инструментарий. Если GLUT не позволяет переопределение (маловероятно), не существует простого способа объединить оба.
Лучшее решение будет использовать OpenTK.GLControl
, который кроссплатформенный и ухоженный. Версия NuGet доступна здесь: https://www.nuget.org/packages/OpenTK.GLControl/
Другое решение было бы использовать Tao.SimpleGlControl
, который только для окон и больше не поддерживается.
Не возиться с дескрипторами окна, я бы предложил использовать OpenTK, который использует Tao Framework. Эта библиотека имеет OpenGLControl, который позволяет интегрировать графику OpenGL в форму Windows.