Matrix OpenGL ES 2.0 mat4[0][0]读取

Matrix OpenGL ES 2.0 mat4[0][0]读取,matrix,opengl-es-2.0,shader,variable-assignment,Matrix,Opengl Es 2.0,Shader,Variable Assignment,我试图从一个统一的mat4中读取一个值,我已经通过以下方式从它内部传递到着色器中 uniform mat4 uEffect; ... float effect = uEffect[0][0]; 这可能吗?着色器没有崩溃,我已经通过了另一个mat4,但我不想以这种方式访问它。我稍后会测试这个值 if(effect>0) blah blah blah 即使我确定我传递的数据大于0,即传递到一个矩阵中,通过调试模式确认只有1,但似乎没有任何东西会引发此火灾 提前感谢您的帮助和建议 马克我认为

我试图从一个统一的mat4中读取一个值,我已经通过以下方式从它内部传递到着色器中

uniform mat4 uEffect;
...
float effect = uEffect[0][0];
这可能吗?着色器没有崩溃,我已经通过了另一个mat4,但我不想以这种方式访问它。我稍后会测试这个值

if(effect>0) blah blah blah
即使我确定我传递的数据大于0,即传递到一个矩阵中,通过调试模式确认只有1,但似乎没有任何东西会引发此火灾

提前感谢您的帮助和建议


马克

我认为这应该是可行的。但是比较float和int effect>0并不一定编译得太好。这段代码在着色器中,更像C,因此不是0.0f…好吧,0.0f也应该会导致编译错误。0.0更多的是你应该使用的。OpenGLES2.0GLSL规范说没有隐式转换,因此不能比较float>0;4.变量和类型,介绍的最后一句话。但是如果您没有看到编译错误,可能您的GLSL编译器对遵循规范的要求不太严格。。。uEffectsHandle=GLES20.glGetAttribLocationmProgram,uEffects。。。而不是uEffectsHandle=GLES20.glGetUniformLocationmProgram,uEffects。。。现在,以下内容在着色器中起作用。。。浮动效果=UEEffects[1][1];,谢谢你的评论。