OpenGL ES 是個跨平臺的 3D 圖形開發包規范,最常見的實現是采用C語言實現的,Android OpenGL ES 實現上是使用 Java 語言對底層的 C 接口進行了封裝,因此在 android.opengl javax.microedition.khronos.egl
javax.microedition.khronos.opengles
包中定義的 OpenGL 相關的類和方法帶有很強的 C 語言色彩。
GL10.GL\_COLOR\_BUFFER\_BIT
gl.glClearColor
gl.glColor4f
,i,x 代表 int 如 gl.glColor4x
在前面 Android OpenGL ES 開發中的 Buffer 使用 說過 OpenGL ES 說過為了提高性能,通常將頂點,顏色等值存放在 java.nio 包中定義的 Buffer 類中。下表列出了 OpenGL ES 指令后綴,Java 類型,Java Buffer(java.nio) 類型的對照表
http://wiki.jikexueyuan.com/project/opengl-es-guide/images/43.png" alt="" />
如下面代碼將為頂點指定 color 值,使用 FloatBuffer 來存放頂點的 Color 數組
// The colors mapped to the vertices.
float[] colors = {
1f, 0f, 0f, 1f, // vertex 0 red
0f, 1f, 0f, 1f, // vertex 1 green
0f, 0f, 1f, 1f, // vertex 2 blue
1f, 0f, 1f, 1f, // vertex 3 magenta
};
...
// float has 4 bytes, colors (RGBA) * 4 bytes
ByteBuffer cbb
= ByteBuffer.allocateDirect(colors.length * 4);
cbb.order(ByteOrder.nativeOrder());
colorBuffer = cbb.asFloatBuffer();
colorBuffer.put(colors);
colorBuffer.position(0);