2012-11-21 7 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"); 

그리고

는 나를 포기하지 말아야 -1 유니폼의 최적화에 따라, 그들은 모두 사용하기 때문에,로, 내가 말할 수있는 건 버텍스 쉐이더

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; 
    } 

입니다 속성입니다. 이 문제에 대한 어떤 통찰력이라면 크게 감사하겠습니다.

답변

관련 문제