如何在Windows窗体应用程序中集成opengl窗口

本文关键字:集成 opengl 窗口 应用程序 窗体 Windows | 更新日期: 2023-09-27 18:10:51

我在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();

    }
    }

如何在Windows窗体应用程序中集成opengl窗口

GLUT是一个窗口工具包;WinForms是一个不同的窗口工具箱。除非GLUT允许修复(不太可能),否则没有直接的方法将两者结合起来。

最好的解决方案是使用OpenTK.GLControl,它是跨平台的并且维护良好。NuGet版本可在此获得:https://www.nuget.org/packages/OpenTK.GLControl/

另一个解决方案是使用Tao.SimpleGlControl,它仅用于windows并且不再维护。

如果不弄乱窗口句柄,我建议使用OpenTK,它使用了Tao框架。这个库有一个OpenGLControl,可以将OpenGL图形集成到windows窗体中。