gpt4 book ai didi

c++ - 回调和主游戏循环。这是一个好习惯吗?

转载 作者:行者123 更新时间:2023-11-30 02:53:36 25 4
gpt4 key购买 nike

我正在使用 C++ 编写游戏。我想知道如何优化我的游戏循环。例如,我们有一些主循环看起来像这样的游戏:

while ( gameContinue ) {
if ( SCENE == HELP_SCENE ) {
renderHelpScene();
} else if ( SCENE == SCORE_SCENE ) {
renderScoreScene();
} else if ( SCENE == MAIN_GAME_SCENE ) {
renderMainGameScene();
} // .... and many others scenes
}

我正在考虑如何使这段代码更快更轻。我考虑使用回调,这样我们就不需要很多 if-cases 了。像这样:

typedef void (*callback_function)(void);
callback_function renderFunc;

void renderMainGameScene() {
renderFunc = renderScoreScene(); // set to another scene if we need this
}
void renderScoreScene() {
renderFunc = renderAnyAnotherSceneWeNeedNow();
}

renderFunc = renderMainGameScene();
while ( gameContinue ) {
renderFunc();
}

你怎么看?您如何组织主循环?

最佳答案

我个人已经开始使用多线程。我有一个用于对象更新的线程,一个用于对象碰撞的线程和一个用于绘图的线程。每个线程都使用 while (GetMessage()) 循环,并且线程从一个线程到另一个线程发送消息。

在每个周期(帧),我的主循环向每个线程发送一条消息:

  1. 计算修改对象的碰撞
  2. 更新对象(运动、状态等)
  3. 绘制更新后的对象

我就是这样做的(至少在我的 GDI/GDI+ 游戏中)。不确定是否是最好的方法,但到目前为止它的效果很好:)。

关于c++ - 回调和主游戏循环。这是一个好习惯吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17830409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com