OpenGL ES 是個(gè)跨平臺(tái)的 3D 圖形開(kāi)發(fā)包規(guī)范,最常見(jiàn)的實(shí)現(xiàn)是采用C語(yǔ)言實(shí)現(xiàn)的,Android OpenGL ES 實(shí)現(xiàn)上是使用 Java 語(yǔ)言對(duì)底層的 C 接口進(jìn)行了封裝,因此在 android.opengl javax.microedition.khronos.egl javax.microedition.khronos.opengles 包中定義的 OpenGL 相關(guān)的類(lèi)和方法帶有很強(qiáng)的 C 語(yǔ)言色彩。
GL10.GL\_COLOR\_BUFFER\_BITgl.glClearColorgl.glColor4f ,i,x 代表 int 如 gl.glColor4x在前面 Android OpenGL ES 開(kāi)發(fā)中的 Buffer 使用 說(shuō)過(guò) OpenGL ES 說(shuō)過(guò)為了提高性能,通常將頂點(diǎn),顏色等值存放在 java.nio 包中定義的 Buffer 類(lèi)中。下表列出了 OpenGL ES 指令后綴,Java 類(lèi)型,Java Buffer(java.nio) 類(lèi)型的對(duì)照表
http://wiki.jikexueyuan.com/project/opengl-es-guide/images/43.png" alt="" />
如下面代碼將為頂點(diǎn)指定 color 值,使用 FloatBuffer 來(lái)存放頂點(diǎn)的 Color 數(shù)組
// 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);