![]() |
1
10
嗯,有很多选择- 大多数游戏使用多功能阅读,例如:
您真的需要考虑您的特定游戏架构,并决定使用多线程从何处获益最大。 |
![]() |
2
3
有些游戏使用多线程渲染器作为核心设计理念。 例如。。。线程1计算所有的游戏逻辑,然后将此信息发送到线程2。线程2预先计算显示列表并将其传递给GPU。线程1在GPU后面运行2个帧,线程2在GPU后面运行一个帧。 优点是理论上你可以在一个框架内完成两倍的工作。剥皮可以在CPU上完成,并且可以在CPU和GPU时间方面变得“免费”。它确实需要对大量数据进行双重缓冲,并仔细构建引擎流,以便在必要时(并且仅在必要时)所有线程都停止运行。 除此之外,现在一种非常常见的技术是运行许多“工作线程”。具有公共接口的任务可以添加到共享(线程安全)队列中,并由工作线程执行。然后,主游戏线程在需要结果之前将这些任务添加到队列中,并继续进行其他处理。当最终需要结果时,主线程可以暂停,直到工作线程完成所有必需的任务。 例如,一个昂贵的for循环可以更改为已使用的任务。
只要保证processExpensive things()对于其他调用是线程安全的,就可以这样做。如果你有80个东西,每个1毫秒,8个工作线程,你已经节省了大约70毫秒。(好吧,不是真的,但这是一个很好的手波近似值。) |
![]() |
3
0
有很多地方可以应用:人工智能,对象交互,多人游戏等。这取决于你的具体游戏。 |
![]() |
4
0
为什么要使用多线程? 如果是为了实践,一个合理而简单的模块放在自己的线程将是健全的系统,因为沟通主要是单向的。 |
![]() |
5
0
|
![]() |
Ruslan · 如何在单游戏中使用或制作“效果”? 7 年前 |
![]() |
MyNameIsGuzse · 找不到C#静态类 7 年前 |
![]() |
John Tran · 有人能告诉我为什么这样不行吗?C#XNA 7 年前 |
![]() |
PÅemysl Novák · 单博弈-等距图块,大地图上的低FPS 7 年前 |
![]() |
TS1997 · 带有winforms的单游戏 9 年前 |
|
Joe Smith · 旋转固定在精灵上的Vector2 9 年前 |
|
jacksparrow · C#XNA-遍历项目并绘制它们 9 年前 |
![]() |
user2056166 · 在xna上绘制圆段 10 年前 |