我无法解决这个问题。要么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类继承但是一切正常。