当GLEW_ARB_framebuffer_object为非零时,为什么glFramebufferTexture为空指针?

Veg*_*ard 2 linux opengl glew

我的代码看起来大致如下:

GLenum glewStatus = glewInit();
if (glewStatus != GLEW_OK)
    exit(1);

if (!GLEW_ARB_framebuffer_object)
    exit(1);

printf("%p\n", glFramebufferTexture);
Run Code Online (Sandbox Code Playgroud)

这打印0,这解释了为什么glFramebufferTexture()立即调用segfaults.

但是,为什么是0?很多其他的帧缓冲功能都工作得很好(例如glBindFramebuffer,glFramebufferRenderbufferglBindFramebuffer).

我是否需要以不同的方式初始化GLEW或扩展名?

Ret*_*adi 5

glFramebufferTexture()是一个比glBindFramebuffer()其他FBO相关切入点更新的切入点.在核心OpenGL规范中,glFramebufferTexture()在3.2中添加,而其余的FBO功能是3.0的一部分.glFramebufferTexture()也不是ARB_framebuffer_object的一部分.

您可以glFramebufferTexture2D()在大多数情况下使用,这是原始FBO功能的一部分.glFramebufferTexture()仅适用于纹理数组,立方体贴图等.