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, // 下顶角

    });

     

  • 相关阅读:
    C语言之数据类型(int float double char unsigned )
    c语言的第一个程序
    socket之udp服务器和客户端
    页面置换算法的模拟实现 C
    C算法--入门篇(1)图形输出
    C算法--入门篇(1)查找元素
    C算法--入门篇(1)入门模拟2
    C算法--入门篇(1)入门模拟1
    C算法--黑盒测试
    C算法--复杂度
  • 原文地址:https://www.cnblogs.com/ghj1976/p/2473046.html
Copyright © 2011-2022 走看看