glGetUniformLocation 在 nvidia 卡上返回 -1

glGetUniformLocation return -1 on nvidia cards

本文关键字:返回 nvidia glGetUniformLocation      更新时间:2023-10-16

我在运行glGetUnfiormLocation调用时遇到了问题。在运行ATI图形卡的学校计算机上构建项目时,该程序运行完美。但是,使用运行 nvidia 卡的学校计算机,对 glGetUniformLocation 的调用返回 -1。

//c++ side
glLinkProgram(ShaderIds[0]);
ExitOnGLError("ERROR: Could not link the shader program");
ModelMatrixUniformLocaion = glGetUniformLocation(ShaderIds[0], "ModelMatrix");
ViewMatrixUniformLocation = glGetUniformLocation(ShaderIds[0], "ViewMatrix");
ProjectionMatrixUniformLocation = glGetUniformLocation(ShaderIds[0], "ProjectionMatrix");
ExitOnGLError("ERROR: Could not get the shader uniform locations");

这是顶点着色器

    layout(location=0) in vec4 in_Position;
    layout(location=1) in vec4 in_Color;
    layout(location=2) in vec2 in_Coord;
    uniform mat4 ModelMatrix;
    uniform mat4 ViewMatrix;
    uniform mat4 ProjectionMatrix;
    varying vec2 v_UVCoord;
    out vec4 ex_Color;
    void main(void)
    {
        gl_Position = (ProjectionMatrix * ViewMatrix * ModelMatrix) * in_Position;
        gl_PointSize = in_Coord.x; 
        ex_Color = in_Color;
        v_UVCoord = in_Coord; 
    }

据我所知,它不应该根据制服的优化给我 -1,因为它们都在使用中,属性也是如此。如能对此事有任何见解,将不胜感激。

链接 OpenGL 程序在失败时不会给出 OpenGL 错误。您必须实际检查程序是否正确链接。