這幾篇Android 3D遊戲開發的文章原文出自一位德國人Martin 在droidnova.com寫的文章,有lixinso翻譯為中文。

 

第一部分首先介紹OpenGL相關的術語,並引導你開始3D開發的第一步。

 

這個關於3D遊戲的系列的叫做 Vortex .

 

這個教程主要focus在3D程式設計上,其他的東西比如功能表和程式生命週期雖然是代碼的一部分,但是在這裡不會被提到。

 

首先開始介紹OpenGL的術語。
頂點Vertex
頂點是3D空間中的一個點,也是許多物件的基礎元素。在OpenGL中你可以生命少至二維座標(X,Y),多至四維(X,Y,Z,W). w軸是可選的,預設的值是1.0. Z軸也是可選的,預設為0. 在這個系列中,我們將要用到3個主要的座標X,Y,Z,因為W一般都是被用來作為預留位置。vertex的複數是vertices(這對非英語母語的人來說 比較重要,因為這容易產生歧義)。所有的物件都是用vertices作為它們的點,因為點就是vertex。

 

三角形Triangle
三角形需要三個點才能創建。因此在OpenGL中,我們使用3個頂點來創建一個三角形。

 

多邊形Polygon
多邊形是至少有3個連接著的點組成的一個物件。三角形也是一個多邊形。

 

圖元Primitives
一個Primitive是一個三維的物件,使用三角形或者多邊形創建。形象的說,一個有50000個頂點的非常精細的模型是一個Primitive,同樣一個只有500個頂點的低模也叫做一個Primitive。

 

現在我們可以開始變成了。

 

創建一個工程交Vortex,activity也是這個名字。我們的工程應該大概是這個樣子的:

o__UP)5JW_0(88RK@BUPZCPUC_thumb.jpg  


如上圖所示,我們已經添加了View。讓我們看一下VortexView類。

  
o_N9CBO_$U1W@QX7B}]9P11DY_thumb.jpg  

如上所示,我們繼承了GLSurfaceView是因為它會説明我們畫3D圖像。接下來看VortexRenderer類。一個Renderer包含畫一幀所必需的所有東西。 引用自這兒references 。

 

Renderer負責OpenGL call來render一個幀。

 

來看一下這個類。:


o_CDH7XV~@${099R)JDPH040G_thumb.jpg

好,我們做了什麼?

 

首先我們實現了GLSurfaceView.Renderer這個介面,主要是實現3個方法:onSurfaceCreated(), onSurfaceChanged() 和 onDrawFrame()。這些方法很容易理解,第一個在surface創建以後調用,第二個是在surface發生改變以後調用,例如從豎屏切換到橫 屏的時候,最後一個方法是當任何時候調用一個畫圖方法的時候。

 

從11行到13行,我們用浮點數來定義RGB顏色系統中的每一個顏色。

 

在28行,我們通過glClearColor()方法為底色定義了顏色。底色是在我們能看到的所有東西的後面,所以所有在底色後面的東西都是不可見 的。可以想像這種東西為濃霧,擋住了所有的東西。然後我們將要為之設置距離來show一下它怎麼用的。那時候你就一定會明白它是怎麼存在的了。

 

為了讓顏色變化可見,我們必須調用glClear()以及顏色緩衝的Mask來清空buffer,然後為我們的底色使用新的底色。
為了能看到它在起作用,我們這裡為MotionEvent創建一個response,使用它來改變顏色。首先在VortexRenderer中來創建一個設置顏色的函數。


o_3Z6${J{5PQE5XJ1T60Z[NP9_thumb.jpg  

下麵是VortexView類中創建的方法來處理MotionEvent。

o_Q(D`1MDKKF_`PJ]UQD88_DR_thumb.jpg  


我們創建了一個匿名的Runnable物件,這裡的run()方法調用renderer中的setColor方法。這有會根據MotionEvent座標做一些小的計算。

 

現在我們已經有了一個小小的程式來使用OpenGl來改變我們的背景色了。
在德語中我們叫這種小case為“Mit Kanonen auf Spatzen schie?en”,翻譯過來應該是“你在車輪上打死了一隻蒼蠅”。這說的恰到好處,這只是一個最最最小的例子,要學習OpenGL,你現在要準備更多更多的東西。

 

這部分最後提一下OpenGL的文檔documentation for OpenGL 。這個東西雖然可用想不高,但是它最少是一個文檔。

 

Eclipse工程原始程式碼在這裡下載(原位址): Vortex Part I

 

這裡是幾個截圖:

o_image_thumb_2.png  





轉自:http://blog.csdn.net/lixinso/archive/2010/01/30/5272495.aspx
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()