glGetUniformLocation return -1 на картах nvidia

У меня возникла проблема с запуском вызовов 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 на основе оптимизации униформ, потому что они все используются, как и атрибуты. Любое понимание этого вопроса будет с благодарностью.

2

Решение

Связывание программы OpenGL делает не выдает ошибку OpenGL, когда она терпит неудачу. Вы должны на самом деле проверить, правильно ли связана программа.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]