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

Update/render game objects using Qt

本文关键字:游戏 对象 Qt 更新 使用      更新时间:2023-10-16

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

干杯。

Qt具有事件循环;它由CCD_ 2启动。我不知道你对更新和渲染的要求是什么;但既然你似乎想要一个像"典型游戏"中那样的事件循环,我想你可以从那里开始。

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

就时间而言,看看QElapsedTimer——我怀疑这就是你想要的。