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是否为有效值

我从未在编程中使用过矩阵,但我修过很多数学课程。不知道您使用的投影是如何工作的,但请记住,x到y的投影与y到x的投影非常不同。如果没有,请尝试切换它们。

glGetError()
返回0。在调用
glUniformMatrix4fv()
projectionSlot=glGetAttriblLocation(programHandle,“Projection”)之前,已经编译并链接了该程序。“在glUniform调用期间程序是否绑定”是什么意思?@Radu:应该是“glGetUniformLocation”,而不是AttribChanged为
glGetUniformLocation()
,仍然是同一个问题。@Radu你能提供包含着色器/初始化所有内容的完整代码吗?@Radu:“你是什么意思?”glUniform调用期间程序是否绑定?“我的意思是您必须在glUniform之前调用glUseProgram(否则它不知道您正在影响哪个程序,请注意程序ID不是glUniform的变量)。