2012-03-28 74 views
0

對於爲頂點,顏色,光照等分配ByteBuffer內存,每次我需要執行以下操作。爲ByteBuffer分配一個輔助函數android OpenGL ES

 ByteBuffer bBuff=ByteBuffer.allocateDirect(vertices.length*4);  
     bBuff.order(ByteOrder.nativeOrder()); 
     vertBuff=bBuff.asFloatBuffer(); 
     vertBuff.put(vertices); 
     vertBuff.position(0); 

     ByteBuffer bColorBuff=ByteBuffer.allocateDirect(colorVals.length*4); 
     bColorBuff.order(ByteOrder.nativeOrder()); 
     colorBuff=bColorBuff.asFloatBuffer(); 
     colorBuff.put(colorVals); 
     colorBuff.position(0); 
     ....... 

所以我嘗試了一個這樣的輔助函數。

private void fBFromFA(float array[], int size, FloatBuffer theBuff){ 

     ByteBuffer bBuff=ByteBuffer.allocateDirect(array.length*size);  
     bBuff.order(ByteOrder.nativeOrder()); 
     theBuff=bBuff.asFloatBuffer(); 
     theBuff.put(array); 
     theBuff.position(0); 

} 

但它沒有工作。它給了我一個java.lang.NullPointerException指出源 gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertBuff);裏面的空洞draw(GL10 gl)方法。

回答

1

您試圖使用theBuff作爲輸出參數,但Java沒有這些參數。相反,返回bBuff

而且沒有必要通過size。 Java中的浮點數總是4個字節。如果你不想要文字,使用Float.SIZE/8(因爲它是位數)。