嗨,这是我在这里的第一篇文章 :) 我在 Android 2.3 OpenGL ES 2 2D 游戏引擎上工作。我尝试通过构建一个大的 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 统一数组传递给顶点着色器?