2008-09-19 64 views
0

我有一個OpenGL ES遊戲,我一起入侵。其中一部分涉及到查看一個大型的「地圖式」區域,然後雙擊一部分以「放大」它。你將如何使用OpenGL ES來提供這種效果(因爲它可能需要放大地圖的不同部分)。如何在iPhone上的OpenGLES中創建縮放效果?

我聽說過glScale和glOrtho,但我不清楚他們是如何工作的,因爲整個openGL世界對我而言是非常新的。

回答

2

使用Core Animation可以更好地實現您描述的2D縮放。 NSView(及其NDA'd iPhone對應部分)在您更改框架時提供隱式動畫。在這種情況下,你需要做的就是將框架的origin.x和origin.y和size.width和size.height設置爲這些值,以使視圖大於屏幕。如果你這樣做了,並將其包裝在適當的調用中以啓動並提交動畫,則可以免費獲得縮放動畫。核心動畫在其幕後使用OpenGL進行動畫處理。

但是,如果您覺得您必須在OpenGL中執行此操作,我可以在http://www.sunsetlakesoftware.com/2008/08/05/lessons-molecules-opengl-es上提出一些小小的修改嗎?我是iPhone的免費3D分子可視化工具Molecules的作者,在開始該項目之前,我對OpenGL ES一無所知。 3周後,它在App Store上市。

OpenGL調用非常簡單,它是圍繞着它們的數學,可以讓你頭疼。放大物體實際上非常簡單,可以通過移動相機或實際物理縮放物體來完成。對於分子,我使用glScalef(x,y,z)函數進行縮放對象的路徑,其中x,y和z是您希望應用於模型對象的縮放因子。我逐漸增加縮放比例。也就是說,我不會在每個渲染幀開始時重置變換矩陣(使用glLoadIdentity()),而只是根據用戶輸入進行縮放。如果用戶將手指分開5%,我將增加5%。

再一次,我建議核心動畫爲您描述的2D縮放,但在OpenGL ES中實現相同的結果並不難。

0

恭喜,答案是需要花幾天時間來學習OpenGL的基礎知識,並且在網絡上有比這裏更好的地方。

+0

我傾向於通過嘗試回答幾個基本問​​題來學習。這似乎是獲得這個特定問題的好地方,因爲它很可能是1-4行代碼。 – 2008-09-19 16:58:10

+0

不夠公平,但你的問題的答案必然是OpenGL變換等類似的長篇教程。值得花時間去弄清楚基本面; http://nehe.gamedev.net/是一個開始的好地方。 – 2008-09-19 17:17:11