• 【解答】OpenGL 定义顶点和顶点颜色时为什么都用0x10000这个值


    问:

    int one = 0x10000;
                   
             //三角形三个顶点
             private IntBuffer triggerBuffer = IntBuffer.wrap(new int[]{
                            0,one,0,                //上顶点
                            -one,-one,0,    //坐下点
                            one,-one,0,});  //右下点
             //正方形的4个顶点
             private IntBuffer quaterBuffer = IntBuffer.wrap(new int[]{
                                    one,one,0,
                                    -one,one,0,
                                    one,-one,0,
                                    -one,-one,0});
            
            
             //三角形的顶点颜色值(r,g,b,a)
             private IntBuffer colorBuffer = IntBuffer.wrap(new int[]{
                             one,0,0,one,
                             0,one,0,one,
                             0,0,one,one,
             });
           上面这段代码,为什么在定义坐标点和顶点颜色值的时候要用到 0x10000 这个数值,不是说3D颜色有两种表达方式么,一种是0.0f~1.0f;还有一种是0~255。为什么很多例程定义坐标和颜色的时候,都用0x10000?

    答:

           这个我倒是有查到,0x10000是出于OPENGL前期内存节约的考虑,以INT型模拟FLOAT型来表示,0x 0001 0000 前面4位表示小数点前,后4位表示小数点后,所以0x10000表示浮点数的1。如果你用的是FloatBuffer,就可以知道此处应该写1.0。

             gl.glVertexPointer(3, GL10.GL_FIXED, 0, triggerBuffer);//GL_FIXED,则后面用的是intbuffer。如上面的例子
             gl.glVertexPointer(3, GL10.GL_FLOAT, 0, triggerBuffer);//则此处那个triggerBuffer用的则是floatBuffer类型。

  • 相关阅读:
    [uiautomator篇][7] 剥离用例层和源代码层 --很好的博客
    Uiautomator学习笔记(2) 封装代码 报错误(NllPointerException)
    Uiautomator ---(1) 封装代码
    [uiautomator篇] [6]脚本更健壮
    uiautomator 一个简单脚本创建流程
    [uiautomator篇][1] 官网译文
    [Uiautomator篇][2] UiDeviceAPI介绍
    [uiautomator篇] [4] 运行成功的日志打印---最后写一个脚本来实现
    警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to
    关于The APR based Apache Tomcat Native library警告
  • 原文地址:https://www.cnblogs.com/xieyuan/p/3787489.html
Copyright © 2020-2023  润新知