Bug: Application called a GL11 Pointer method with an indirect Buffer

来源:互联网 发布:深入浅出学习软件 编辑:程序博客网 时间:2024/06/06 00:45


在Android studio 中测试OpenGL es,app运行崩溃,然后查看日志,发现Error:



原因: 不能直接使用

FloatBuffer.wrap(float [] arr), IntBuffer.wrap(int [] arr)


解决办法:

    public IntBuffer bufferUtil(int[] arr){        IntBuffer buffer;        ByteBuffer byteBuffer = ByteBuffer.allocateDirect(arr.length * 4);        byteBuffer.order(ByteOrder.nativeOrder());        buffer = byteBuffer.asIntBuffer();        buffer.put(arr);        buffer.position(0);        return buffer;    }    public FloatBuffer bufferUtil(float[] arr){        FloatBuffer buffer;        ByteBuffer byteBuffer = ByteBuffer.allocateDirect(arr.length * 4);        byteBuffer.order(ByteOrder.nativeOrder());        buffer = byteBuffer.asFloatBuffer();        buffer.put(arr);        buffer.position(0);        return buffer;    }

修改之后,运行成功。

0 0