Android OpenGL ES 开发教程(4):OpenGL ES API 命名习惯

本文深入探讨了Android OpenGLES环境下的OpenGL指令特性及其与Java类型之间的映射关系,详细解释了常量、指令后缀、Java类型以及Java Buffer的使用,帮助开发者更高效地进行3D图形开发。

OpenGL ES是个跨平台的3D图形开发包规范,最常见的实现是采用C语言实现的,Android OpenGL ES 实现上是使用Java 语言对底层的C接口进行了封装,因此在android.opengl javax.microedition.khronos.egl ,javax.microedition.khronos.opengles 包中定义的OpenGL相关的类和方法带有很强的C语言色彩。

  • 定义的常量都以GL_为前缀。比如GL10.GL_COLOR_BUFFER_BIT
  • OpenGL ES 指令以gl开头 ,比如gl.glClearColor
  • 某些OpenGL指令以3f 或4f结尾,3和4代表参数的个数,f代表参数类型为浮点数,如gl.glColor4f ,i,x 代表 int如 gl.glColor4x
  • 对应以v结尾的OpenGL ES 指令,代表参数类型为一个矢量(Vector) ,如 glTexEnvfv
  • 所有8-bit整数对应到byte 类型,16-bit 对应到short类型,32-bit整数(包括GLFixed)对应到int类型,而所有32-bit 浮点数对应到float 类型。
  • GL_TRUE,GL_FALSE 对应到boolean类型
  • C字符串((char*)) 对应到Java 的 UTF-8 字符串。

在前面Android OpenGL ES 开发中的Buffer使用 说过OpenGL ES 说过为了提高性能,通常将顶点,颜色等值存放在java.nio 包中定义的Buffer类中。下表列出了OpenGL ES指令后缀, Java类型,Java Buffer(java.nio)类型的对照表

如下面代码 将为顶点指定color 值,使用FloatBuffer 来存放顶点的Color数组

[java]  view plain copy print ?
  1. // The colors mapped to the vertices.  
  2. float[] colors = {  
  3. 1f, 0f, 0f, 1f, // vertex 0 red  
  4. 0f, 1f, 0f, 1f, // vertex 1 green  
  5. 0f, 0f, 1f, 1f, // vertex 2 blue  
  6. 1f, 0f, 1f, 1f, // vertex 3 magenta  
  7. };  
  8.    
  9. ...  
  10. // float has 4 bytes, colors (RGBA) * 4 bytes  
  11. ByteBuffer cbb  
  12. = ByteBuffer.allocateDirect(colors.length * 4);  
  13. cbb.order(ByteOrder.nativeOrder());  
  14. colorBuffer = cbb.asFloatBuffer();  
  15. colorBuffer.put(colors);  
  16. colorBuffer.position(0);  

原文出处:http://blog.youkuaiyun.com/mapdigit/article/details/7561577
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值