Qt使用glGenVertexArrays需要包含哪个头文件,包含QtOpenGL还是不能找到接口
时间: 2024-03-05 13:51:56 浏览: 199
如果在使用glGenVertexArrays函数时,包含了QtOpenGL头文件,但是仍然无法找到接口,可能是因为当前OpenGL的版本不支持这个函数。
在OpenGL 3.0及以上版本中,glGenVertexArrays函数已经成为核心函数,无需使用OpenGL扩展库来支持。因此,如果您在使用OpenGL 3.0及以上版本时,可以直接包含以下头文件:
```c++
#include <QtWidgets>
#include <QOpenGLFunctions_3_0>
```
然后在类定义中继承QOpenGLFunctions_3_0类,这个类已经包含了glGenVertexArrays函数的声明和实现,可以直接使用,无需再包含其他头文件。
如果您在使用OpenGL 3.0以下版本,可以使用OpenGL扩展库来支持glGenVertexArrays函数。此时需要包含以下头文件:
```c++
#include <QtWidgets>
#include <QtOpenGL>
#include <QOpenGLFunctions>
```
然后在类定义中继承QOpenGLFunctions类,并在初始化函数中初始化OpenGL函数指针,示例代码如下:
```c++
class GLWidget : public QOpenGLWidget, protected QOpenGLFunctions
{
Q_OBJECT
public:
explicit GLWidget(QWidget *parent = 0);
...
};
void GLWidget::initializeGL()
{
initializeOpenGLFunctions();
...
}
void GLWidget::paintGL()
{
// 创建顶点数组对象
GLuint vao;
glGenVertexArrays(1, &vao);
// 使用顶点数组对象
glBindVertexArray(vao);
...
}
```
需要注意的是,如果您在使用OpenGL扩展库时,需要在初始化时检查扩展是否可用,然后才能使用扩展函数。
阅读全文