我的代码大致如下所示:

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

if (!GLEW_ARB_framebuffer_object)
    exit(1);

printf("%p\n", glFramebufferTexture);

这将输出0,因此可以解释为什么立即调用glFramebufferTexture() segfaults。

但是,为什么是0?许多其他帧缓冲功能也可以正常工作(例如glBindFramebufferglFramebufferRenderbufferglBindFramebuffer)。

我是否需要以其他方式初始化GLEW或扩展名?

最佳答案

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

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

10-07 23:39