2012-11-21 22 views
2

我一直在運行glGetUnfiormLocation調用的問題。在運行ATI顯卡的學校計算機上構建項目時,該程序完美無瑕。但是,使用運行nvidia卡的學校計算機,對glGetUniformLocation的調用返回-1。glGetUniformLocation在nvidia卡上返回-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基於制服的優化,因爲他們都在使用中,是屬性。任何有關此事的見解將不勝感激。

回答