Opengl es 统一结构中的OpenGL ES 2.0 GLSL Mat4不';不行?

Opengl es 统一结构中的OpenGL ES 2.0 GLSL Mat4不';不行?,opengl-es,struct,glsl,uniform,Opengl Es,Struct,Glsl,Uniform,我正在为Android 2.3+构建一个原生活动应用程序。三星Galaxy S3 OpenGL ES 2.0 GLSL着色器似乎没有正确使用我的mat4统一结构变量!GLSL示例: struct SceneStruct { mat4 modelViewProjectionMatrix; }; uniform SceneStruct scene; 这在我的桌面Linux版本上确实有效,但在Adreno中为Android(ARMEABI-V7A)编译时,它不起作用。但是,如果我将其展平(将其

我正在为Android 2.3+构建一个原生活动应用程序。三星Galaxy S3 OpenGL ES 2.0 GLSL着色器似乎没有正确使用我的mat4统一结构变量!GLSL示例:

struct SceneStruct {
  mat4 modelViewProjectionMatrix;
};

uniform SceneStruct scene;
这在我的桌面Linux版本上确实有效,但在Adreno中为Android(ARMEABI-V7A)编译时,它不起作用。但是,如果我将其展平(将其置于结构之外),它就会工作

uniform mat4 scene_modelViewProjectionMatrix;
有什么想法吗


编辑:不起作用,如中的“无错误”,但着色器不使用它们(例如modelViewProjectionMatrix)

定义“不起作用”?你是如何上传矩阵的?等等。代码包含编译/链接时相关着色器的错误检查?嘿,伙计们,谢谢你们的快速回复@Nicol Bolas:“不工作”意味着它甚至不会抛出错误,没有着色器编译时/链接时问题。它得到了统一的名称(不是-1),但是当我设置它时,它就不起作用了(其他一切都正常,glClear的等等)。没有错误。。实际上,我对它做了更多的工作,似乎所有其他结构都能工作,只是结构中的mat4不起作用。适用于普通OpenGL桌面,但不适用于OpenGL ES 2.0。。当你把它放在结构外部时,它就工作了,所以使用glUniformMatrix4F不是问题。如果我猜一猜,三星编译器会把mat4看作是四个vec4的结构,而不允许在结构内部使用struct。试着直接使用vec4?如果“Adreno”引用的是GPU,那是高通公司的,而不是三星公司的。