QOpenGLWidget:动态添加对象时未更新视口

时间:2016-04-28 15:32:41

标签: c++ qt opengl

我无法解决这个问题。要么QOpenGLWidget坏了,要么我做错了。 我正在尝试动态地在屏幕上添加实体。我将它们添加到堆栈中并使用paintGL()方法绘制它们。

void C_OpenGL::addEntity(float x, float y, float z)
{
    std::vector<Vertex> vertices = {
        Vertex(-0.5f, -0.5f, -0.5f),
        Vertex(0.5f, -0.5f, -0.5f),
        Vertex(0.5f,  0.5f, -0.5f),
        Vertex(0.5f,  0.5f, -0.5f),
        Vertex(-0.5f,  0.5f, -0.5f),
        Vertex(-0.5f, -0.5f, -0.5f),

        Vertex(-0.5f, -0.5f,  0.5f),
        Vertex(0.5f, -0.5f,  0.5f),
        Vertex(0.5f,  0.5f,  0.5f),
        Vertex(0.5f,  0.5f,  0.5f),
        Vertex(-0.5f,  0.5f,  0.5f),
        Vertex(-0.5f, -0.5f,  0.5f),

        Vertex(-0.5f,  0.5f,  0.5f),
        Vertex(-0.5f,  0.5f, -0.5f),
        Vertex(-0.5f, -0.5f, -0.5f),
        Vertex(-0.5f, -0.5f, -0.5f),
        Vertex(-0.5f, -0.5f,  0.5f),
        Vertex(-0.5f,  0.5f,  0.5f),

        Vertex(0.5f,  0.5f,  0.5f),
        Vertex(0.5f,  0.5f, -0.5f),
        Vertex(0.5f, -0.5f, -0.5f),
        Vertex(0.5f, -0.5f, -0.5f),
        Vertex(0.5f, -0.5f,  0.5f),
        Vertex(0.5f,  0.5f,  0.5f),

        Vertex(-0.5f, -0.5f, -0.5f),
        Vertex(0.5f, -0.5f, -0.5f),
        Vertex(0.5f, -0.5f,  0.5f),
        Vertex(0.5f, -0.5f,  0.5f),
        Vertex(-0.5f, -0.5f,  0.5f),
        Vertex(-0.5f, -0.5f, -0.5f),

        Vertex(-0.5f,  0.5f, -0.5f),
        Vertex(0.5f,  0.5f, -0.5f),
        Vertex(0.5f,  0.5f,  0.5f),
        Vertex(0.5f,  0.5f,  0.5f),
        Vertex(-0.5f,  0.5f,  0.5f),
        Vertex(-0.5f,  0.5f, -0.5f)
    };

    ent->addComponent<C_MeshRenderer>(vertices);
    entities.push_back(ent);

    update();
}

在paintGL()方法中,我像这样绘制实体

void paintGL()
{
    for(unsigned int i = 0; i < entities.size(); i++)
    {
        entities[i]->update();
        entities[i]->draw(renderer);
    }
}

我已将update()方法连接到C_OpenGL构造函数中的计时器。 当我尝试放置实体时,没有显示任何内容。好像屏幕没有更新。从QGLWidget类继承但是一切正常。

0 个答案:

没有答案