android 3d 问题汇总1

第一例子就遇到问题了!!

问题描述:

直接生成intBuffer:
int one = 0x10000;
// 三角形的3个顶点
	private IntBuffer triggerBuffer = IntBuffer.wrap(new int[]
	{ 0, one, 0, // 上顶点
			-one, -one, 0, // 左下顶点
			one, -one, 0, }); // 右下顶点



结果就报错:
java.lang.IllegalArgumentException: Must use a native order direct Buffer


解决方案:
1、直接弄一个nativeorder
类似于这样的:
/正方体顶点缓存
  ByteBuffer qbb = ByteBuffer.allocateDirect(quater.length * 4);
           qbb.order(ByteOrder.nativeOrder());
           quaterBuffer = qbb.asIntBuffer();
           quaterBuffer.put(quater);
           quaterBuffer.position(0);
                
             //正方体颜色缓存
            ByteBuffer quacbb = ByteBuffer.allocateDirect(quaColors.length * 4);
            quacbb.order(ByteOrder.nativeOrder());
            quaColorBuffer = quacbb.asIntBuffer();
            quaColorBuffer.put(quaColors);
            quaColorBuffer.position(0);

这样是可以的。

2、问题出现在sdk版本上

 <uses-sdk android:minSdkVersion="3" />
 
   
改成3就ok了。       

你可能感兴趣的:(android)