頂点数が 32767 を超える複雑なモデルがあります。現在、インデックスは GL_UNSIGNED_BYTE または GL_UNSIGNED_SHORT 型としてのみ opengl に渡すことができます。Java には unsigned の概念がないため、unsigned short オプションは単純な (signed) short、つまり 16 ビット、つまり +32767 にマップされます。頂点を指定するときは、opengl に short[] を渡す必要があります。ここで、配列の値は頂点配列の頂点を指します。ただし、32767 個を超える頂点がある場合、値は short[] に収まりません。
インデックスを指定する別の方法はありますか? コードスニペットは以下のとおりです。
short[] shorts = ... read the indices ...;
...
ShortBuffer indicesBuffer = null;
ByteBuffer ibb = ByteBuffer.allocateDirect(indices.length * Short.SIZE / 8);
ibb.order(ByteOrder.nativeOrder());
indicesBuffer = ibb.asShortBuffer();
indicesBuffer.put(indices);
indicesBuffer.position(0);
...
gl.glDrawElements(GL10.GL_TRIANGLES, numOfIndices, GL10.GL_UNSIGNED_SHORT, indicesBuffer);
...