我使用Widget继承QGLWidget
在我的Qt应用程序中显示OpenGL视口。
Widget只会创建三个CRenderVector
并一直绘制它们。
CRenderVector
只是一组QVector3D
,一个QOpenGLVertexArrayObject
和三个QOpenGLBuffer
的顶点,索引和颜色。
使用
创建顶点缓冲区对象const GLFloat color[] = {1, 0, 0, 1, 0, 0};
color_buffer.create();
color_buffer.setUsagePattern(QOpenGLBuffer::StaticDraw);
color_buffer.bind();
color_buffer.allocate(color, sizeof(color);
color_buffer.release();
分别使用0, 0, 0
和vec().{x,y,z}()
作为vertex_buffer
。
通过
创建顶点数组对象vertex_array.create();
vertex_array.bind();
vertex_buffer.bind();
glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_TRUE, 0, (void*)0);
index_buffer.bind();
color_buffer.bind();
glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_TRUE, 0, (void*)0);
vertex_array.release();
绘制矢量看起来像
vertex_array.bind();
glDrawElements(GL_LINES, elements, GL_UNSIGNED_INT, (void*)0);
vertex_array.release();
问题是,除了清除颜色外,我无法在视口中看到任何内容,尽管我认为我使用了official Qt documentation中显示的所有内容。我在哪里误解了Qt或OpenGL文档?
QtCreator的剥离项目可以在mediafire下载。