使用Qt更新/渲染游戏对象

时间:2012-03-18 07:42:29

标签: c++ qt event-loop

我想知道在使用Qt时如何更新和渲染游戏对象。例如。对于一个典型的游戏,你有一个事件循环,但Qt只有exec()。使用Qt更新和渲染游戏对象的正确方法是什么?我如何做每个帧之间的时间来更新我的游戏对象?我是否为所有这些使用单独的线程?

我的问题与this thread非常相似,但我并不是要避免使用标准的Qt流程。

编辑:我为这个不完整的问题道歉。我相信tmpearce已经回答了我的问题,但这里是我试图做的一个基本的例子,以防其他人有同样的问题:

int main(int argv, char **args)
{
    QApplication app(argv, args);

    ApplicationWindow window;
    window.show();

    // How and where do I update my Game object?

    return app.exec();
}

class Game
{
public:
    void timeUpdate()
    {
        // Update game entities, etc. Should be called every frame.
    }

    void render()
    {
        // Renders game entities - where should I render to?
        // Should be called 30 times a second, etc.
    }
};

干杯。

1 个答案:

答案 0 :(得分:7)

Qt 事件循环;它由QApplication::exec()开始。在更新和渲染方面,我不知道您的要求是什么;但是既然你似乎想要一个像“典型游戏”那样的事件循环,我会假设你可以从那里拿走它。

在您的应用程序中,创建一个QTimer。将它的timeout信号连接到要在每个事件循环上调用的插槽。调用QTimer::start(0):每次通过事件循环时都会触发timeout信号。

就时机而言,请查看QElapsedTimer - 我怀疑这是你正在寻找的。