没有浮点在Java中,我们可以直接分配字节缓冲区一样为什么我们直接分配字节的ByteBuffer,但用openGL(ES)在FloatBuffer
ByteBuffer bf ;
bf.allocateDirect();
但是,我们不能这样做,在FloatBuffer的情况下,没有这是为什么呢?
我不知道是否是因为:
字节是在硬件层面访问(如OpenGL的工作只是上面不像delvik硬件)和寄存器硬件(GPU硬件)的单位是字节,甚至浮点数字应该存储在4字节的寄存器中,因为这些寄存器可能不可用,所以我们不能直接分配,相反我们应该告诉缓冲区为给定大小的块分配内存,然后将数据放入这些块中,并再次将其作为FloatBuffer处理。
OpenGL将自己的类型用于浮点数,整数等,这些类型具有明确定义的大小。这些类型的大小没有平台依赖性。每个平台上的“GLfloat”保证为32位。 – 2014-12-02 15:59:28
是的,glfloat保证是32位的,但是当你在opengl es中发送顶点时,它们不是GLfloats,而是漂浮的,这意味着依赖于平台,你必须使用nio缓冲区。纠正我,如果我错了,我没有经历过你。 – KostasRim 2014-12-02 20:35:45