【发布时间】:2012-05-13 18:57:59
【问题描述】:
OpenGL 函数 glDrawBuffers(GLsizei n, const GLenum *bufs) 在 Qt 中可用吗? 我正在尝试将多个渲染目标传递给我的片段着色器,QtCreator 说该函数未在此范围内声明。这个想法是有一个带有两个颜色缓冲区的帧缓冲区对象,并使用片段着色器绘制到这两个缓冲区。
固定: 只需将#define GL_GLEXT_PROTOTYPES 1 添加到有问题的文件中:(
【问题讨论】:
-
如果你有片段着色器和这样的工作,那么你必须有某种扩展加载代码。当你创建你的上下文时,你得到了什么 GL 版本?
-
@Nicol:glGetString(GL_VERSION) 给了我“3.3.0 NVIDIA 295.40”。 GL 上下文是使用 QGLWidget 中的 makeCurrent() 设置的。如果我删除 FBO,着色器可以完美工作(即使用默认窗口颜色缓冲区)
-
你用什么来加载你的 OpenGL 函数?
-
我的小部件类继承了 QGLWidget,现在继承了 QGLFunctions(用于 Framebufferfunctions)。除此之外,我只是从 QtOpenGL.h 导入所有用于绑定、链接等着色器的函数,以及其他 gl 函数开箱即用,唯一的问题是 glDrawBuffers()。