Android OpenGL基礎教程 2

來源:互聯網
上載者:User

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

這個系列的第二部分是關於如何添加一個三角形並可以旋轉它。

第一件事情是初始化需要顯示的三角形。我們來在VortexRenderer類中添加一個方法initTriangle()。

讓我們從新的物件變數開始. _vertexBuffer為我們的三角形儲存座標._indexBuffer儲存索引. _nrOfVertices變數定義需要多少個頂點.對於一個三角形來說,一共需要三個頂點.

      這個方法首先為這裡兩個buffer分配必須的記憶體(14-22行). 接下來我們定義一些座標(24-28行) 後面的注釋對用途給予了說明.
      在30行,我們將coords數組填充給_vertexBuffer . 同樣在31行將indices數組填充給_indexBuffer 。最後將兩個buffer都設定position為0.

為了防止每次都對三角形進行初始化,我們僅僅在onDrawFrame()之前的行數調用它一次。一個比較好的選擇就是在onSurfaceCreated()函數中.

glEnableClientState() 設定OpenGL使用vertex數組來畫。這是很重要的,因為如果不這麼設定OpenGL不知道如何處理我們的資料。接下來我們就要初始化我們的三角形。

為什麼我們不需使用不同的buffer? 在新的onDrawFrame()方法中我們必須添加一些新的OpenGL調用。

好,一步一步地看。
glClearColor() 和

glClear() 在教程I部分已經提到過。在第10行使用glColor4f(red, green, blue, alpha)設定三角形為暗紅色 .

在第13行,我們使用glVertexPointer()初始化Vertex Pointer. 第一個參數是大小,也是頂點的維數。我們使用的是x,y,z三維座標。第二個參數,GL_FLOAT定義buffer中使用的資料類型。第三個變數是0,是因為我們的座標是在數組中緊湊的排列的,沒有使用offset。最後哦胡第四個參數頂點緩衝。

最後,glDrawElements()將所有這些元素畫出來。第一個參數定義了什麼樣的圖元將被畫出來。第二個參數定義有多少個元素,第三個是indices使用的資料類型。最後一個是繪製頂點使用的索引緩衝。

當最後測試這個應用的使用,你會看到一個在螢幕中間靜止的三角形。當你點擊螢幕的時候,螢幕的背景顏色還是會改變。

現在往裡面添加對三角形的旋轉。下面的代碼是寫在VortexRenderer類中的.

glRotatef()方法在glColor4f()之前被onDrawFrame()調用.

這時候我們可以繞y軸旋轉。如果需要改變只需要改變glRotate()方法中的0f。這個參數中的值表示一個向量,標誌三角形繞著旋轉的座標軸。

要讓它可用,我們必須在VortexView中的onTouchEvent()中添加一個調用。

上面代碼中除以10是為了減小角度變換的速度。

現在編譯運行這個程式。如果你在螢幕的最左邊點擊,你會看到三角形輕微旋轉。如果你將手指移到右邊,旋轉的速度就會變得很快。

Eclipse工程的原始碼在這裡下載(原連結):
Vortex Part II

http://www.360disk.com/file-38423.html

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

這個系列的第二部分是關於如何添加一個三角形並可以旋轉它。

第一件事情是初始化需要顯示的三角形。我們來在VortexRenderer類中添加一個方法initTriangle()。

讓我們從新的物件變數開始. _vertexBuffer為我們的三角形儲存座標._indexBuffer儲存索引. _nrOfVertices變數定義需要多少個頂點.對於一個三角形來說,一共需要三個頂點.

      這個方法首先為這裡兩個buffer分配必須的記憶體(14-22行). 接下來我們定義一些座標(24-28行) 後面的注釋對用途給予了說明.
      在30行,我們將coords數組填充給_vertexBuffer . 同樣在31行將indices數組填充給_indexBuffer 。最後將兩個buffer都設定position為0.

為了防止每次都對三角形進行初始化,我們僅僅在onDrawFrame()之前的行數調用它一次。一個比較好的選擇就是在onSurfaceCreated()函數中.

glEnableClientState() 設定OpenGL使用vertex數組來畫。這是很重要的,因為如果不這麼設定OpenGL不知道如何處理我們的資料。接下來我們就要初始化我們的三角形。

為什麼我們不需使用不同的buffer? 在新的onDrawFrame()方法中我們必須添加一些新的OpenGL調用。

好,一步一步地看。
glClearColor() 和

glClear() 在教程I部分已經提到過。在第10行使用glColor4f(red, green, blue, alpha)設定三角形為暗紅色 .

在第13行,我們使用glVertexPointer()初始化Vertex Pointer. 第一個參數是大小,也是頂點的維數。我們使用的是x,y,z三維座標。第二個參數,GL_FLOAT定義buffer中使用的資料類型。第三個變數是0,是因為我們的座標是在數組中緊湊的排列的,沒有使用offset。最後哦胡第四個參數頂點緩衝。

最後,glDrawElements()將所有這些元素畫出來。第一個參數定義了什麼樣的圖元將被畫出來。第二個參數定義有多少個元素,第三個是indices使用的資料類型。最後一個是繪製頂點使用的索引緩衝。

當最後測試這個應用的使用,你會看到一個在螢幕中間靜止的三角形。當你點擊螢幕的時候,螢幕的背景顏色還是會改變。

現在往裡面添加對三角形的旋轉。下面的代碼是寫在VortexRenderer類中的.

glRotatef()方法在glColor4f()之前被onDrawFrame()調用.

這時候我們可以繞y軸旋轉。如果需要改變只需要改變glRotate()方法中的0f。這個參數中的值表示一個向量,標誌三角形繞著旋轉的座標軸。

要讓它可用,我們必須在VortexView中的onTouchEvent()中添加一個調用。

上面代碼中除以10是為了減小角度變換的速度。

現在編譯運行這個程式。如果你在螢幕的最左邊點擊,你會看到三角形輕微旋轉。如果你將手指移到右邊,旋轉的速度就會變得很快。

Eclipse工程的原始碼在這裡下載(原連結):
Vortex Part II

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.