Qt5 OpenGL没有绘制任何东西

时间:2014-10-18 15:04:00

标签: c++ qt opengl qt5

我使用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, 0vec().{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下载。

0 个答案:

没有答案