2012-03-28 1 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을 사용하십시오 (비트 수가이기 때문에).