Android OpenGL基礎教程 1

來源:互聯網
上載者:User

這幾篇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也是這個名字。我們的工程應該大概是這個樣子的:

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

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

Renderer負責OpenGL call來render一個幀。

來看一下這個類。:

 

好,我們做了什嗎?

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

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

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

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

下面是VortexView類中建立的方法來處理MotionEvent。

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

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

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

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

這裡是幾個:

詳細文檔可從如下連結下載:

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.