在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Android/ OpenGL ES API 命名習(xí)慣
繪制線(xiàn)段 Line Segment
投影變換 Projection
繪制迷你太陽(yáng)系
繪制一個(gè)球體
繪制三角形 Triangle
OpenGL 光照模型
三維坐標(biāo)系及坐標(biāo)變換初步
定義 3D 模型的前面和后面
繪制一個(gè) 20 面體
顏色 Color
Depth Buffer
材質(zhì)及光照示例
基本幾何圖形定義
關(guān)于EGL
導(dǎo)言
Viewing 和 Modeling(MODELVIEW) 變換
FrameBuffer
設(shè)置光照效果 Set Lighting
Viewport 變換
階段小結(jié)
繪制點(diǎn) Point
OpenGL ES API 命名習(xí)慣
通用的矩陣變換指令
關(guān)于 OpenGL ES
創(chuàng)建實(shí)例應(yīng)用 OpenGLDemos 程序框架
OpenGL ES 管道(Pipeline)
GLSurfaceView

OpenGL ES API 命名習(xí)慣

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ǔ)言色彩。

  • 定義的常量都以 GL_ 為前綴。比如 GL10.GL\_COLOR\_BUFFER\_BIT
  • OpenGL ES 指令以 gl 開(kāi)頭 ,比如 gl.glClearColor
  • 某些 OpenGL 指令以 3f 或 4f 結(jié)尾,3 和 4 代表參數(shù)的個(gè)數(shù),f 代表參數(shù)類(lèi)型為浮點(diǎn)數(shù),如 gl.glColor4f ,i,x 代表 int 如 gl.glColor4x
  • 對(duì)應(yīng)以v結(jié)尾的 OpenGL ES 指令,代表參數(shù)類(lèi)型為一個(gè)矢量(Vector) ,如 glTexEnvfv
  • 所有 8-bit 整數(shù)對(duì)應(yīng)到 byte 類(lèi)型,16-bit 對(duì)應(yīng)到 short 類(lèi)型,32-bit 整數(shù)(包括 GLFixed)對(duì)應(yīng)到 int類(lèi)型,而所有 32-bit 浮點(diǎn)數(shù)對(duì)應(yīng)到 float 類(lèi)型。
  • GL_TRUE,GL_FALSE 對(duì)應(yīng)到 boolean類(lèi)型
  • C 字符串((char*)) 對(duì)應(yīng)到 Java 的 UTF-8 字符串。

在前面 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);