我正在尝试为我想写的游戏创建一个简单的多线程游戏引擎。到目前为止,一切都没有问题,我甚至知道完成它所需的步骤。
唯一我不知道的事情是(从技术上讲,我知道解决方案,但我希望有更优雅、更快的方法):基本上,我的引擎的每个部分 - 图形、输入、物理、音频等都有一个独立的线程。
物理线程具有完整的世界场景节点结构,用于模拟所有内容。然而,现在我必须将这个结构传递给我的图形线程,并尽可能地减少开销。理想情况下,它应该只传输自上次更新以来发生变化的部分。
我已经准备好了传输这些数据的组件,唯一的问题就是生成它。
到目前为止,我想到了两种不同的方法:
1.每次更新都复制整个结构-非常简单,但可能会占用大量时间和内存(我没有使用大型引擎的经验-这样做可行吗?)
2.通过标记场景节点来跟踪场景的哪些部分发生了变化,然后仅复制更改的部分。
方法一会复制大量的内存,但没有太多的处理能力,方法二则相反:有足够的处理能力,复制的内存较少。
在典型的游戏环境中,哪种方法会更快呢?
唯一我不知道的事情是(从技术上讲,我知道解决方案,但我希望有更优雅、更快的方法):基本上,我的引擎的每个部分 - 图形、输入、物理、音频等都有一个独立的线程。
物理线程具有完整的世界场景节点结构,用于模拟所有内容。然而,现在我必须将这个结构传递给我的图形线程,并尽可能地减少开销。理想情况下,它应该只传输自上次更新以来发生变化的部分。
我已经准备好了传输这些数据的组件,唯一的问题就是生成它。
到目前为止,我想到了两种不同的方法:
1.每次更新都复制整个结构-非常简单,但可能会占用大量时间和内存(我没有使用大型引擎的经验-这样做可行吗?)
2.通过标记场景节点来跟踪场景的哪些部分发生了变化,然后仅复制更改的部分。
方法一会复制大量的内存,但没有太多的处理能力,方法二则相反:有足够的处理能力,复制的内存较少。
在典型的游戏环境中,哪种方法会更快呢?