5

我想知道在使用 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.
    }
};

干杯。

4

1 回答 1

7

Qt一个事件循环;它由QApplication::exec(). 我不知道您对更新和渲染的要求是什么;但是由于您似乎想要像“典型游戏”中那样的事件循环,我假设您可以从那里获取它。

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

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

于 2012-03-18T14:05:17.353 回答