zoukankan      html  css  js  c++  java
  • Android OpenGL ES(三)OpenGL ES API 命名习惯 .

    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)类型的对照表(OpenGLES中int float byte等使用场景比较多)

    如下面代码 将为顶点指定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);
  • 相关阅读:
    HDU1429:胜利大逃亡(续)
    HDU1728:逃离迷宫
    HDU1253:胜利大逃亡
    HDU1180:诡异的楼梯
    HDU1175:连连看(搜索)
    HDU1072:Nightmare
    HDU1074:Doing Homework
    Codeforces Round #259 (Div. 1)A(公式)
    HDU1430;魔板(BFS+康托展开)
    Codeforces785D
  • 原文地址:https://www.cnblogs.com/Anita9002/p/4441929.html
Copyright © 2011-2022 走看看