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

Mit*_*tch 4 c++ qt event-loop

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

我的问题非常类似于这个主题,除了我不想避免标准的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.
    }
};
Run Code Online (Sandbox Code Playgroud)

干杯.

tmp*_*rce 7

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

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

关于时间安排,请查看QElapsedTimer - 我怀疑它正是您正在寻找的.