zoukankan      html  css  js  c++  java
  • Must use a native order direct Buffer

    http://www.cnblogs.com/shengdoushi/archive/2011/01/02/1923940.html

    这个系列的博客对学习OpenGL 2D开发很有帮助,不过它给出的代码在Android 3.1上运行报错,

    Must use a native order direct Buffer

    出现这个是因为 OpenGL是一个非常底层的画图接口,它所使用的缓冲区存储结构是和java程序中不相同的。Java是大端字节序(BigEdian),而OpenGL所需要的数据是小端字节序(LittleEdian)。所以,我们需要 Java 的缓冲区转化为 OpenGL 可用的缓冲区。

    修改方法很简单

    新建一个 大端字节序(BigEdian) 跟 小端字节序(LittleEdian)转换的函数

    import java.nio.ByteBuffer;

    import java.nio.ByteOrder;

    import java.nio.FloatBuffer;

    public class BufferUtil {

    public static FloatBuffer floatBuffer;

    public static FloatBuffer fBuffer(float[] a) {

    // 先初始化buffer,数组的长度*4,因为一个float占4个字节

    ByteBuffer mbb = ByteBuffer.allocateDirect(a.length * 4);

    // 数组排列用nativeOrder

    mbb.order(ByteOrder.nativeOrder());

    floatBuffer = mbb.asFloatBuffer();

    floatBuffer.put(a);

    floatBuffer.position(0);

    return floatBuffer;

    }

    }

    然后在变量的定义地方做定义即可。

    FloatBuffer triggerBuffer = BufferUtil.fBuffer(new float[] { 60, 200, // 左上角

    180, 200, // 右上角

    120, 300, // 下顶角

    });

     

  • 相关阅读:
    # 漏洞挖掘技巧清单 #
    CVE-2020-0796——SMBV3客户端/服务端远程代码执行漏洞(远程代码执行+权限提升)
    SSH公钥详细介绍及拓展
    滑动窗口(数据结构)
    反素数解析
    树状数组的基本操作
    Rochambeau POJ
    一般图最大匹配
    2020牛客暑期多校训练营(第一场)H Minimum-cost Flow
    A Bug's Life POJ
  • 原文地址:https://www.cnblogs.com/ghj1976/p/2473046.html
Copyright © 2011-2022 走看看