glLinkProgram () не определена при выполнении программы, даже если glew сообщает, что она существует

Я использую (очень) недорогой графический адаптер (Intel G31).

Я пишу программу OpenGL, которая использует VBO и шейдеры (GLSL 1.2). Программа компилируется без нареканий, но потом, когда она вызывает glLinkProgram(), исключение выдается:

Unhandled exception at 0x1027101A (ig4icd32.dll) in Test.exe: 0xC0000005: Access violation reading location 0x00000000.

Я использовал glew’s glewinfo.exe и OpenGL Extensions Viewer, чтобы узнать, glLinkProgram() существует — и существует Также другие тесно связанные функции (glCreateProgram(), glCreateShader(), glCompileShader()и т. д.) работает и работает по назначению.

Что может быть фактическим источником проблемы? Это проблема или ошибка glew? Это проблема моего водителя?

Я поставил glewExperimental в GL_TRUE который решил многие из моих других проблем.

РЕДАКТИРОВАТЬ: Я также использовал glLinkProgramARB() и выдает ту же ошибку, что и выше.

2

Решение

При условии ig4icd32.dll это драйвер Intel, и вот где он падает, я предполагаю, что драйвер Intel дает сбой.

Это не должно делать это, но не чувствовать себя плохо. Intel довольно хорошо известна плохими драйверами OpenGL. Лучше всего избегать их везде, где это возможно.

2

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

У меня была та же проблема с набором микросхем Intel Mobile 4 Express, шейдер был скомпилирован просто отлично, но это исключение, возникающее при связывании реальной программы, даже с тривиальными вершинными или фрагментными шейдерами.
Я не использовал glew, и в моей программе glLinkProgram вызывался так:

   ((PFNGLLINKPROGRAMPROC)wglGetProcAddress("glLinkProgram"))(p);

Затем я решил эту проблему, сначала получив указатель, а затем вызвав реальную функцию.
Я не знаю, почему это так работает.

    PFNGLLINKPROGRAMPROC glLinkProgram = ((PFNGLLINKPROGRAMPROC)wglGetProcAddress("glLinkProgram"));
glLinkProgram(p);

Я пытаюсь лучше отладить первое утверждение, чтобы найти причину сбоя программы.

0

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