2012-08-05 66 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,因爲它更新。實現多級結構很棘手,但如果您瞭解三維座標系的工作原理,您應該能夠自己想出一個合理的解決方案。

相關問題