2012-08-05 64 views
0

我正在为我的一个大学项目编写一个opengl程序。我没有与opengl一起工作的背景,并且在三年坚持MATLAB之后我刚回到Visual C++(我必须!不要责怪我!)。然而,在这个项目中,我应该创建一个多层次的游戏,并且令人惊讶的是,似乎没有关于这种类型的游戏编程的教程或线索。我的游戏发生在一个虚拟的长方形房间中,如果玩家可以获得足够的分数,游戏应该在不同形状的房间中重复,等等(我们必须至少有6个级别)使用Win32控制台应用程序重复基于Glut的OpenGL程序

现在,根据我在我的代码中广泛使用了glut函数以及我的主函数,并且我知道没有办法打破glutMainLoop()的循环;我想知道如何实现这种多层次结构?

我应该摆脱过剩,并用freeglut或基本的gl函数替换它?

我应该使用多线程作为解决方案吗?当我使用Win32控制台应用程序时可以吗?

回答

0

我应该摆脱过剩,并用freeglut或基本的gl函数代替它吗?

我应该使用多线程作为解决方案吗?当我使用Win32控制台应用程序时可以吗?

这些都不会对您造成问题。

你可能做过代码你的房间。那是你的问题。不要硬编码几何或风景。

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

+0

谢谢你的建议datenwolf。这很鼓舞人心。为了确保理解你,我应该这样写: //全局变量 Struct RoomShape {...}; int得分; DarwRoom(){... 绘图 RoomShape ... } 鼠标(){... 如果 (按钮= GLUT_LEFT_BUTTON) 如果(得分> MAX) //改变RoomShape } 非常感谢您的指导 – 2012-08-06 00:12:03

+0

@OmidRanjbar:是的。但你也可以预先准备好几个房间形状结构,然后重定向一个指针。实际上并不是唯一一个正确的方法。它完全取决于你的问题。我唯一能想到的就是不要硬编码你的几何体(即使它也可以切换)。 – datenwolf 2012-08-06 07:54:02

0

你不需要需要来取代GLUT。 OpenGL代码将保持不变。你甚至不需要打破它的主循环。不过考虑使用freeGLUT,因为它更新。实现多级结构很棘手,但如果您了解三维坐标系的工作原理,您应该能够自己想出一个合理的解决方案。

相关问题