0

我目前正在使用 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 上工作

4

1 回答 1

2

尝试使用以下调用创建帧缓冲区对象

glFramebufferTexture2DEXT(

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

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

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

最简单的方法:

  1. 从http://glew.sourceforge.net下载 GLEW
  2. 将所有出现的 替换#include <GL/gl.h>#include <GL/glew.h>
  3. glewInit();在(每个)上下文创建之后调用
  4. 将 GLEW 库添加到您的构建链接器设置中。
于 2012-11-07T18:10:17.697 回答