我似乎找不到 glGenBuffer
Qt5 中的函数,我的包含列表看起来像
#include <QtOpenGL/qgl.h>
#include <QtOpenGL/qglbuffer.h>
#include <QtOpenGL/qglcolormap.h>
#include <QtOpenGL/qglframebufferobject.h>
#include <QtOpenGL/qglfunctions.h>
#include <QtOpenGL/qglpixelbuffer.h>
#include <QtOpenGL/qglshaderprogram.h>
#include <GL/GLU.h>
我正在尝试执行类似以下示例的操作:
http://qt-project.org/doc/qt-5.0/qtopengl/cube.html
它在哪里?
最佳答案
我知道我迟到了,但这里有一个更优雅的解决方案(你不需要 GLEW =))
除了确保您拥有 QT += opengl
在您的 *.pro 文件中,并且您的 Qt 版本具有 OpenGL,并且您具有 #include <QGLFunctions>
(您不需要上面列出的所有这些内容;只需这一行)在您的头文件中,您还需要一件事。
因此,假设您有一个调用所有这些函数的类:
class MeGlWindow : public QGLWidget
{
// bla bla bla...
}
你需要继承一个 protected 类QGLFunctions :
class MeGlWindow : public QGLWidget, protected QGLFunctions // add QGLFunctions
{
// bla bla bla...
}
同样,正如 GLEW 所要求的
glewInit()
在调用 OpenGL 函数之前调用一次,QGLFunctions
需要您调用initializeGLFunctions()
.例如,在 QGLWidget
, initializeGL()
在开始绘制任何东西之前被调用一次:void MeGlWindow::initializeGL()
{
initializeGLFunctions();
// ...now you can call your OpenGL functions!
GLuint myBufferID;
glGenBuffers(1, &myBufferID);
// ...
}
现在您应该可以调用
glGenBuffers
了, glBindBuffer
, glVertexAttribPointer
或任何没有 GLEW 的 openGL 功能。更新 :
某些 OpenGL 函数,如
glVertexAttribDivisor
和 glDrawElementsInstanced
不使用 QGLFunctions
.这是因为 QGLFunctions
仅提供特定于 OpenGL/ES 2.0 API 的功能,可能没有这些功能。要解决此问题,您可以使用 QOpenGLFunctions_4_3_Core (或类似的)仅在 Qt 5.1 之后才可用。替换
QGLFunctions
与 QOpenGLFunctions_4_3_Core
, 和 initializeGLFunctions()
与 initializeOpenGLFunctions()
.
关于qt - Qt5 中的 glGenBuffers 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048729/