0

ByteBuffer毎回頂点、色、照明などにメモリを割り当てるには、次のことを行う必要があります。

      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);

}

しかし、うまくいきませんでした。voidメソッド内java.lang.NullPointerExceptionでソースを指す ようになりました。gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertBuff);draw(GL10 gl)

4

1 に答える 1

1

出力パラメータとして使用しようとしてtheBuffいますが、Javaにはこれらがありません。代わりに、を返しbBuffます。

そして、渡す必要はありませんsize。Javaではフロートは常に4バイトです。リテラルが必要ない場合は、を使用しますFloat.SIZE / 8(ビット数であるため)。

于 2012-03-28T11:16:17.417 に答える