Android OpenGLES 报错 Must use a native order direct Buffer

Refrence

  1. http://blog.sina.com.cn/s/blog_4119bd830100wlab.html
  2. 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 可用的缓冲区时需要作一些工作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值