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

2024-03-19

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

我的问题非常类似于这个线程 http://www.qtcentre.org/threads/31457-Does-Qt-widgets-work-without-it-s-main-Event-loop,但我并不想避免标准 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.
    }
};

Cheers.


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

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

至于时间安排,请查看QElapseTimer http://doc.qt.nokia.com/4.7-snapshot/qelapsedtimer.html- 我怀疑这就是你要找的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Qt 更新/渲染游戏对象 的相关文章

随机推荐