[Android] 3D game tutorial – Part I
讓我們先從 OpenGL的術語。
一個頂點是在三維空間中的一點,可以建出許多物件。在OpenGL可指定最少兩個坐標[coordinates](X,Y)和最多4個(的X,Y,Z,W)。在W -軸是可選的,默認值設置為 1.0。Z軸也是可選的,默認值設置為 0。在這個系列中,我們將使用三個主要坐標 X,Y和Z,W是因為通常用作一個佔位符(placeholder)。複數的vertex稱vertices。所有的對象都是使用vertices繪製作為他們的points,所以point會提到一個vertex。
一個三角形需要被3點創建。因此,在OpenGL中,我們使用三個頂點創建一個。
一個多邊形是一個對象,它至少有三個連接點。為此三角形也是一個多邊形。
一個基元是使用或三角形或多邊形創建的一個3D物件。有點諷刺意味:50.000詳細模型的頂點,也是一種原始的詳細模型就像一個低500頂點。
我們創建了一個新的project,稱為Vortex。
我們的活動會很熟悉:
[java]
package com.droidnova.android.games.vortex;
import android.app.Activity;
import android.os.Bundle;
public class Vortex extends Activity {
private static final String LOG_TAG = Vortex.class.getSimpleName();
private VortexView _vortexView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
_vortexView = new VortexView(this);
setContentView(_vortexView);
}
}
[/java]
正如您所見,我們已經將自己的看法。讓我們看一看我們的權利
[java]
package com.droidnova.android.games.vortex;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.opengl.GLSurfaceView;
public class VortexRenderer implements GLSurfaceView.Renderer {
private static final String LOG_TAG = VortexRenderer.class.getSimpleName();
private float _red = 0.9f;
private float _green = 0.2f;
private float _blue = 0.2f;
@Override
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
// Do nothing special.
}
@Override
public void onSurfaceChanged(GL10 gl, int w, int h) {
gl.glViewport(0, 0, w, h);
}
@Override
public void onDrawFrame(GL10 gl) {
/ /定義的顏色,我們要顯示為“剪輯牆”
gl.glClearColor(_red, _green, _blue, 1.0f);
/ /清除顏色緩衝區,以顯示ClearColor我們呼籲上面…
gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
}
}
[/java]
好吧,我們在這裡做什麼?
從第11行至13行,我們有floats定義每個顏色的RGB色彩系統。
第28行我們定義的顏色我們的“clipping wall”的方法glClearColor()。該“clipping wall”涵蓋一切,是背後的距離,我們可以看到,所以每一個物件背後的“wall”是無形的。想像一下,壁類似霧。後來我們將設置距離以顯示它是如何工作。目前,它是絕對足夠的,你知道它的存在。
為了使我們的顏