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 に答える