Multithreading 使用Win32控制台应用程序重复基于Glut的OpenGL程序

Multithreading 使用Win32控制台应用程序重复基于Glut的OpenGL程序,multithreading,winapi,visual-c++,opengl,glut,Multithreading,Winapi,Visual C++,Opengl,Glut,我正在为我的一个大学项目编写一个opengl程序。在OpenGL的工作中我没有背景,我在坚持Matlab三年后刚刚回到Visual C++(我必须这样做!不要怪我!)然而,在这个项目中,我应该创建一个多层次的游戏,令人惊讶的是,在网上似乎没有关于这种游戏编程的教程或线索。我的游戏是在一个虚拟的长方形房间里进行的,如果玩家能得到足够的分数,游戏应该在一个不同形状的房间里重述,以此类推(我们必须至少有6个关卡) 现在,根据我在代码和主函数中广泛使用glut函数的事实,我知道没有办法打破glutMai

我正在为我的一个大学项目编写一个opengl程序。在OpenGL的工作中我没有背景,我在坚持Matlab三年后刚刚回到Visual C++(我必须这样做!不要怪我!)然而,在这个项目中,我应该创建一个多层次的游戏,令人惊讶的是,在网上似乎没有关于这种游戏编程的教程或线索。我的游戏是在一个虚拟的长方形房间里进行的,如果玩家能得到足够的分数,游戏应该在一个不同形状的房间里重述,以此类推(我们必须至少有6个关卡)

现在,根据我在代码和主函数中广泛使用glut函数的事实,我知道没有办法打破glutMainLoop()的循环;我想知道如何实现这种多级结构

我应该摆脱glut并用freeglut或基本gl函数替换它吗

我应该使用多线程作为解决方案吗?当我使用Win32 Console应用程序时是否可能

我应该摆脱glut并用freeglut或基本gl函数替换它吗

我应该使用多线程作为解决方案吗?当我使用Win32 Console应用程序时是否可能

这两个都不是你的问题

你可能对你的房间进行了编码。那是你的问题。不要硬编码几何体或场景


将游戏表示为数据结构。有一些游戏状态指向结构。切换房间时,将指针更改为指向另一个实例。

您不需要用任何东西替换GLUT。OpenGL代码将保持不变。你甚至不需要打破它的主循环。然而,考虑使用FLUEGLUT,因为它是最新的。实现多层次结构是一件棘手的事情,但如果您研究三维坐标系是如何工作的,您应该能够自己想出一个合理的解决方案。

谢谢您的建议datenwolf。这是鼓舞人心的。为了确保理解您的意思,我应该这样写://Global Variables Struct RoomShape{…};智力得分;DarwRoom(){…绘制RoomShape…}鼠标(){…如果(按钮=GLUT_左键)如果(分数>最大)//更改RoomShape}非常感谢您的帮助guidance@OmidRanjbar:是的,沿着那条路走。但您也可以事先准备好几个房间形状的结构,然后重定向一个指针。做这件事并不是只有一种正确的方法。这完全取决于你的问题。我唯一能告诉你的是不要硬编码你的几何体(即使有可能切换这些)。