GLGetProgramResourceIndex异常错误

GLGetProgramResourceIndex exception error

本文关键字:错误 异常 GLGetProgramResourceIndex      更新时间:2023-10-16

我有一个简单而复杂的问题。我正在运行以下代码:

    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__);

以下变量的内容为:

光线跟踪器:2

window.GetWidth()*窗口。GetHeight()*4*3:122.88万

像素缓冲器:1

我得到的不是某种OpenGL错误显示,而是一个异常错误,我的程序正好在这一行中断/chrash。

有人知道问题出在哪里吗?

编辑:

我发现glGetProgramResourceIndex为null(我猜是函数指针),所以我想这与GLEW有关?

答案如下:

glewExperimental=GL_TRUE;

如果没有这个标志集,某些函数就无法加载。