gpt4 book ai didi

qt - Qt5 中的 glGenBuffers 在哪里?

转载 作者:行者123 更新时间:2023-12-04 23:24:32 33 4
gpt4 key购买 nike

我似乎找不到 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 函数,如 glVertexAttribDivisorglDrawElementsInstanced不使用 QGLFunctions .这是因为 QGLFunctions仅提供特定于 OpenGL/ES 2.0 API 的功能,可能没有这些功能。

要解决此问题,您可以使用 QOpenGLFunctions_4_3_Core (或类似的)仅在 Qt 5.1 之后才可用。替换 QGLFunctionsQOpenGLFunctions_4_3_Core , 和 initializeGLFunctions()initializeOpenGLFunctions() .

关于qt - Qt5 中的 glGenBuffers 在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048729/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com