glGenRenderbuffersEXT没有声明,但glGenFramebuffersEXT工作

时间:2011-04-14 19:03:58

标签: qt opengl

我正在尝试在使用QGLWidget的项目中使用RBO。现在,当我想使用RBO快速读取纹理时,编译器说'glGenRenderbuffersEXT'未在此范围内声明。与FBO(glGenFramebuffersEXT)相同的工作正常。

gl相关包括我使用:

#include <GL/glew.h>
#include <QtOpenGL>

我也链接到了glew库。 这里是我的CMakeLists.txt转储:

include_directories(
    ${GLEW_INCLUDE_PATH}
    ${PROJECT_SOURCE_DIR}/include
    ${OpenCV_INCLUDE_DIRS}
    ${CG_INCLUDE_PATH}
)

set(LIBS
    ${GLEW_LIBRARY}
    ${OPENGL_gl_LIBRARY}
    ${OPENGL_glu_LIBRARY}
    ${CG_LIBRARY}
    ${CG_GL_LIBRARY}
    ${OpenCV_LIBS}
    ${GFlags_LIBS}
    ${QT_LIBRARIES}
    common
    ndiolib
    optimization-static
    LightingLib-static
)

SOURCE_GROUP("Shader Files" FILES ${SHADER_FILES})

add_executable(Relighting ${HDRS} ${SRCS} ${MOCSRC} ${SHADER_FILES} main.cxx)
target_link_libraries(Project ${LIBS})

任何人都有想法,可能出现什么问题?当我尝试使用glext.h(+ gl.h)而不是glew.h时,找不到RBO和FBO。

附带问题:我应该使用RBO来读取纹理吗?或者使用我用来读出纹理的FBO同样快?

1 个答案:

答案 0 :(得分:2)

我检查OpenGL网站,看来你提到的功能只有在定义了GL_GLEXT_PROTOTYPES时才会定义。

http://www.opengl.org/registry/api/glext.h

进一步挖掘表明,您需要定义此符号才能使用扩展原型。

http://www.opengl.org/registry/ABI/#5