• 【解答】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类型。

  • 相关阅读:
    vue使用talkIngData统计
    vue项目中使用百度统计
    vue的指令修饰符
    提问:
    整理心情再投入下一个阶段
    CSS写三角形
    单行文本和多行文本超出隐藏
    清除浮动的方法
    用JS表示斐波拉契数列
    vue中使用动态挂载和懒加载,实现点击导航栏菜单弹出不同弹框
  • 原文地址:https://www.cnblogs.com/xieyuan/p/3787489.html
Copyright © 2020-2023  润新知