我的代码大致如下所示:
GLenum glewStatus = glewInit();
if (glewStatus != GLEW_OK)
exit(1);
if (!GLEW_ARB_framebuffer_object)
exit(1);
printf("%p\n", glFramebufferTexture);
这将输出0,因此可以解释为什么立即调用
glFramebufferTexture()
segfaults。但是,为什么是0?许多其他帧缓冲功能也可以正常工作(例如
glBindFramebuffer
,glFramebufferRenderbuffer
和glBindFramebuffer
)。我是否需要以其他方式初始化GLEW或扩展名?
最佳答案
glFramebufferTexture()
是比glBindFramebuffer()
和其他FBO相关入口点更新的入口点。在核心OpenGL规范中,在3.2中添加了glFramebufferTexture()
,而其余的FBO功能则是3.0的一部分。 glFramebufferTexture()
也不是ARB_framebuffer_object的一部分。
在大多数情况下,您可以使用glFramebufferTexture2D()
,这是原始FBO功能的一部分。 glFramebufferTexture()
仅在纹理数组,立方体贴图等方面有所不同。