Refrence
- http://blog.sina.com.cn/s/blog_4119bd830100wlab.html
- https://www.cnblogs.com/ghj1976/archive/2012/04/27/2473046.html
Android使用OpenGLES时,传入的顶点着色器是FloatBuffer,各资料都显示需要通过 ByteBuffer.allocateDirect(4 * 4 * 2).order(ByteOrder.nativeOrder()).asFloatBuffer();
申请,而不是直接使用 FloatBuffer.allocate(),搞不懂原有,因此手动测试了下发现报错:
java.lang.IllegalArgumentException: Must use a native order direct Buffer
查询资料得知:
OpenGL所使用的缓冲区存储结构是和我们的java 程序中不相同的。
Java 是大端字节序(BigEdian),而 OpenGL 所需要的数据是小端字节序(LittleEdian)。所以,我们在将 Java 的缓冲区转化为 OpenGL 可用的缓冲区时需要作一些工作。