身份矩阵混淆

时间:2012-04-03 04:30:58

标签: opengl-es-2.0

我有以下顶点着色器:

attribute vec4 Position;
attribute vec4 SourceColor;
varying vec4 DestinationColor;
uniform mat4 Projection;

void main(void) {
    DestinationColor = SourceColor;
    gl_Position = Projection * Position;
}

然后我尝试将以下矩阵应用于Projection制服:

float matrix[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(projectionSlot, 1, GL_FALSE, matrix);

这不应该什么都不做?运行之后,我再也看不到屏幕上的物体......

2 个答案:

答案 0 :(得分:1)

是的,它应该是无操作。如果你删除投影倍数然后你说它工作正常? 几个想法:

  • 检查glGetError
  • 检查着色器编译/链接状态(glGetShader / Programiv)
  • 在glUniform调用期间程序是否绑定?
  • projectionSlot是否为有效值?

答案 1 :(得分:0)

我从未在编程中使用过矩阵,但我已经学了很多数学课程。不知道你使用的投影是如何工作的,但请记住,x投射到y上的投影与y投影到x上的情况大不相同。如果你没有,请尝试切换它们。