如何将mat4数组传递给Android中opengl es 2中的着色器?
嗨,这是我在这里的第一篇帖子:) 我在Android 2.3 OpenGL ES 2 2D游戏引擎上工作。我试图通过构建一个大型VBO来提高性能,而不是一个接一个地绘制sprite。我使用批处理一次绘制32个精灵 这是我的顶点着色器定义:如何将mat4数组传递给Android中opengl es 2中的着色器?,android,opengl-es,vbo,Android,Opengl Es,Vbo,嗨,这是我在这里的第一篇帖子:) 我在Android 2.3 OpenGL ES 2 2D游戏引擎上工作。我试图通过构建一个大型VBO来提高性能,而不是一个接一个地绘制sprite。我使用批处理一次绘制32个精灵 这是我的顶点着色器定义: uniform mat4 mvpMatrix[32]; 当我使用客户端内存时 for (int k = 0; k < m; k++) mvpBuffor.put(models[k], 0, models[k].length); mvpBuffo
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);
我得到错误代码1281
任何人都知道如何将mat4均匀数组传递给顶点着色器?如果您阅读此内容,它应该是类似于:
GLES20.glUniformMatrix4fv(<handle>, <number of matrices>, <transposed?>, <array of matrices>);
GLES20.glUniformMatrix4fv(,);
看起来着色器仍在将MVP矩阵声明为一致
均匀mat4 MVP矩阵[32]
但您试图将其作为属性传入:
GLES20.GlenableVertexAttributeArray(mMVPMatrixHandle);
GLES20.GLVERTEXAttributePointer(mMVPMatrixHandle,MVP_SIZE*BATCHSIZE,GLES20.GL_FLOAT,false,0,0) 由于某些原因,手机上的GLE统一阵列被破坏
哪一行给出了错误?在GLES中没有中断,规范很清楚:“可以使用数组的名称或使用“[0]”后的名称检索数组第一个元素的位置。”。如果乔什克林特在那篇文章中的断言是真的(我想在撰写本文时也是如此)。5年前,iOS和Galaxy Tab驱动程序都出现了不同的bug。
GLES20.glUniformMatrix4fv(<handle>, <number of matrices>, <transposed?>, <array of matrices>);