こんにちは、これが私の最初の投稿です:) Android 2.3 OpenGL ES 2 2Dゲームエンジンに取り組んでいます。スプライトを 1 つずつ描画するのではなく、1 つの大きな VBO を作成することでパフォーマンスを向上させようとしています。バッチ処理を使用して、一度に 32 個のスプライトを描画します。
これは私の頂点シェーダーの定義です:
uniform mat4 mvpMatrix[32];
クライアント側メモリを使用する場合
for (int k = 0; k < m; k++)
mvpBuffor.put(models[k], 0, models[k].length);
mvpBuffor.position(0);
GLES20.glUniformMatrix4fv(mMVPMatrixHandle, m, false, mvpBuffor);
GLES20.glDrawArrays(GLES20.GL_TRIANGLES, 0, m * VERTEX_PER_SPRITE);
これは非常にうまく機能しますが、VBOを使用しようとすると
GLES20.glBindBuffer(GLES20.GL_ARRAY_BUFFER, batch.mvpBufferIndex);
GLES20.glEnableVertexAttribArray(mMVPMatrixHandle);
GLES20.glVertexAttribPointer(mMVPMatrixHandle, MVP_SIZE * BATCHSIZE, GLES20.GL_FLOAT, false, 0, 0);
エラーコード 1281 が表示されます
mat4ユニフォームの配列を頂点シェーダーに渡す方法を知っている人はいますか?