在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;
}
修改之后,运行成功。
本文介绍了一种解决Android Studio中OpenGL ES应用崩溃的方法。通过改进FloatBuffer和IntBuffer的创建方式,避免了直接使用wrap方法导致的问题,确保了应用能够正常运行。
2240

被折叠的 条评论
为什么被折叠?



