Android,OpenGL ES 2.0 - 为什么为ByteBuffer.allocateDirect调用设置每个浮点数4个字节?

时间:2012-09-26 22:28:13

标签: java android opengl-es-2.0

从示例中复制和粘贴源代码是一回事,但我正在寻找一些答案来解释为什么示例是这样的。

我无法回答的一个问题是为什么三角形的ByteBuffer每个坐标需要四个字节。

example presented by Google中,ByteBuffer实例化,每个三角形坐标有四个字节。

    // initialize vertex byte buffer for shape coordinates
    // (number of coordinate values * 4 bytes per float)
    ByteBuffer bb = ByteBuffer.allocateDirect(triangleCoords.length * 4);

    // use the device hardware's native byte order
    bb.order(ByteOrder.nativeOrder());
  1. 为什么每个坐标只有4个字节而不是2个或8个?
  2. nativeOrder()调用的目的是什么?

1 个答案:

答案 0 :(得分:1)

浮点数由32位表示,等于4个字节。

对本机顺序的调用将缓冲区中的字节重新排列为本机系统的顺序,大端,小端等等。