qt6.5
目前使用MinGW_64+qmake,构建widget需要在.pro文件加入openglwidgets模块,
QT += openglwidgets
需要自己构建类,目的是为了方便qt的ui对象直接使用openGL属性,似乎qt6.5的qopenglfunctions_4_5_core.h不能直接使用VAO,头文件加入
#include <QOpenGLExtraFunctions>
QOpenGLExtraFunctions就可以使用 glGenVertexArrays和
glBindVertexArray了
了解
- 顶点数组对象:Vertex Array Object,VAO
- 顶点缓冲对象:Vertex Buffer Object,VBO
- 元素缓冲对象:Element Buffer Object,EBO 或 索引缓冲对象 Index Buffer Object,IBO
来自learnOpenGL你好,三角形 - LearnOpenGL CN (learnopengl-cn.github.io)
一个储存了我们顶点属性配置和应使用的VBO的顶点数组对象。一般当你打算绘制多个物体时,你首先要生成/配置所有的VAO(和必须的VBO及属性指针),然后储存它们供后面使用。当我们打算绘制物体的时候就拿出相应的VAO,绑定它,绘制完物体后,再解绑VAO。
比较重要的两点
1.OpenGL的核心模式要求我们使用VAO,所以它知道该如何处理我们的顶点输入。如果我们绑定VAO失败,OpenGL会拒绝绘制任何东西
2.当目标是GL_ELEMENT_ARRAY_BUFFER的时候,VAO会储存glBindBuffer的函数调用。这也意味着它也会储存解绑调用,所以确保你没有在解绑VAO之前解绑索引数组缓冲,否则它就没有这个EBO配置了