Opengl es 2.0 单位矩阵混淆
我有以下顶点着色器:Opengl es 2.0 单位矩阵混淆,opengl-es-2.0,Opengl Es 2.0,我有以下顶点着色器: 属性向量4位置; 属性vec4源颜色; 可变vec4目的色; 均匀mat4投影; 真空总管(真空){ DestinationColor=SourceColor; gl_位置=投影*位置; } 然后,我尝试将以下矩阵应用于投影均匀: 浮点矩阵[16]={ 1.0f,0.0f,0.0f,0.0f, 0.0f,1.0f,0.0f,0.0f, 0.0f,0.0f,1.0f,0.0f, 0.0f,0.0f,0.0f,1.0f }; glUniformMatrix4fv(投影批次,1
属性向量4位置;
属性vec4源颜色;
可变vec4目的色;
均匀mat4投影;
真空总管(真空){
DestinationColor=SourceColor;
gl_位置=投影*位置;
}
然后,我尝试将以下矩阵应用于投影
均匀:
浮点矩阵[16]={
1.0f,0.0f,0.0f,0.0f,
0.0f,1.0f,0.0f,0.0f,
0.0f,0.0f,1.0f,0.0f,
0.0f,0.0f,0.0f,1.0f
};
glUniformMatrix4fv(投影批次,1,GL_假,矩阵);
这不应该什么都不做吗?运行此操作后,我在屏幕上再也看不到我的对象了…是的,它应该是不可操作的。如果删除“投影倍增”,则表示它工作正常? 两个想法:
- 检查glGetError
- 检查着色器编译/链接状态(glGetShader/Programiv)
- glUniform调用期间程序是否绑定李>
- projectionSlot是否为有效值
glGetError()
返回0。在调用glUniformMatrix4fv()
和projectionSlot=glGetAttriblLocation(programHandle,“Projection”)之前,已经编译并链接了该程序代码>。“在glUniform调用期间程序是否绑定”是什么意思?@Radu:应该是“glGetUniformLocation”,而不是AttribChanged为glGetUniformLocation()
,仍然是同一个问题。@Radu你能提供包含着色器/初始化所有内容的完整代码吗?@Radu:“你是什么意思?”glUniform调用期间程序是否绑定?“我的意思是您必须在glUniform之前调用glUseProgram(否则它不知道您正在影响哪个程序,请注意程序ID不是glUniform的变量)。