本文主要是介绍Android OpenGLES 报错 Must use a native order direct Buffer,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
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 可用的缓冲区时需要作一些工作。
这篇关于Android OpenGLES 报错 Must use a native order direct Buffer的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!