Ошибка исключения GLGetProgramResourceIndex

0

У меня есть простая, но сложная проблема. Я запускаю следующий код:

    OpenGL::PrintError(__FILE__, __LINE__);
GLuint raytracer = CompileRayTracer();
OpenGL::SetProgram(raytracer);
OpenGL::PrintError(__FILE__, __LINE__);

// Generate the buffer.
OpenGL::PrintError(__FILE__, __LINE__);
GLuint pixelbuffer;
glGenBuffers(1, &pixelbuffer);
OpenGL::PrintError(__FILE__, __LINE__);

glBindBuffer(GL_SHADER_STORAGE_BUFFER, pixelbuffer);
OpenGL::PrintError(__FILE__, __LINE__);

glBufferData(GL_SHADER_STORAGE_BUFFER, window.GetWidth() * window.GetHeight() * 4 * 3, NULL, GL_DYNAMIC_COPY);
OpenGL::PrintError(__FILE__, __LINE__);

glBindBuffer(GL_SHADER_STORAGE_BUFFER, NULL);
OpenGL::PrintError(__FILE__, __LINE__);

GLuint index = glGetProgramResourceIndex(raytracer, GL_SHADER_STORAGE_BLOCK, "PixelBuffer");
OpenGL::PrintError(__FILE__, __LINE__);

glShaderStorageBlockBinding(raytracer, index, 1);
OpenGL::PrintError(__FILE__, __LINE__);

Содержимое следующих переменных:

raytracer: 2

window.GetWidth() * window.GetHeight() * 4 * 3: 1228800

pixelbuffer: 1

Вместо какого-то отображения ошибок OpenGL я получаю ошибку исключения, и моя программа прерывает/прерывает именно эту строку.

Кто-нибудь знает, в чем проблема?

РЕДАКТИРОВАТЬ:

Я выяснил, что glGetProgramResourceIndex имеет значение NULL (как я полагаю, указатель на функцию), поэтому я думаю, что это имеет какое-то отношение к GLEW?

Теги:
opengl
glew

1 ответ

0
Лучший ответ

Ответ был следующим:

glewExperimental = GL_TRUE;

К сожалению, некоторые из функций не загружаются без этого флага.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню