Framebuffer对象在Qt 4.8.1中不起作用

时间:2012-11-07 17:20:25

标签: opengl framebuffer fbo

我目前正在使用Qt中的OpenGL并尝试使用以下调用创建一个帧缓冲对象

 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, scene_img, 0);

当我尝试编译项目时,我收到以下错误:

Error: C2065: 'GL_FRAMEBUFFER_EXT' : undeclared identifier

显然,名称GL_FRAMEBUFFER_EXT无法在任何地方识别。我尝试导入QtOpenGL,QGLShaderProgram和QGLFramebufferObject没有运气。还是一样的错误。我看了ql.h,仍然没有运气。还有什么我需要导入的吗?请注意,除了FRAMEBUFFER问题之外,我的普通QGLWidget没有问题。

顺便说一句:在Windows 7上工作

1 个答案:

答案 0 :(得分:2)

  

尝试使用以下调用

创建帧缓冲对象
glFramebufferTexture2DEXT(

不会创建帧缓冲对象。它将纹理指定为颜色附件。

顺便说一句,以EXT结尾的函数是不属于核心功能的扩展函数。扩展通常从EXT到ARB并且可能成为核心,但是对于API的重大更改可能会发生微妙的变化。

无论如何,除了OpenGL-1.1(Windows)或OpenGL-1.2(GLX)之外的所有内容都必须通过扩展机制进行访问,即使它已成为核心功能。

最简单的方法:

  1. http://glew.sourceforge.net
  2. 下载GLEW
  3. 将所有出现的#include <GL/gl.h>替换为#include <GL/glew.h>
  4. 在(每个)上下文创建之后调用glewInit();
  5. 将GLEW库添加到构建链接器设置。