Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将mat4数组传递给Android中opengl es 2中的着色器?_Android_Opengl Es_Vbo - Fatal编程技术网

如何将mat4数组传递给Android中opengl es 2中的着色器?

如何将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

嗨,这是我在这里的第一篇帖子:) 我在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);
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>);