c++ - 多线程策略? (通过Editor在多线程引擎中修改场景)

标签 c++

我正在尝试编写一个超越多线程游戏引擎的编辑器。理论上,通过编辑器,场景的内容可以完全改变,但我一直没能想出一个很好的引擎来应对这些变化。 (即在渲染器绘制实体时删除实体)。此外,在我使用可能被删除的实体或资源的每个实例中,我都不愿意编写代码来管理锁。我想必须有一个相对更优雅的解决方案。

有没有人有任何想法或策略可供我引用?

谢谢!

最佳答案

除了@lassevk 建议的两阶段过程之外,您还可以使用 Pipe structure将命令“推送”到渲染器,以便这些更改以渲染引擎的另一个工作项的形式出现。

例如,假设您的引擎遵循如下工作流程:

  1. 计算位置
  2. 过程物理
  3. 过程灯过程相机
  4. 渲染场景

您可以在位置 0 的工作流中添加一个新项目,称为 Process Changes,它从 Pipe 中提取信息并将其合并到场景中。

关于c++ - 多线程策略? (通过Editor在多线程引擎中修改场景),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/798410/

相关文章:

c++ - C++ 中的网络适配器信息

c++ - 如何将此代码从递归更改为迭代

struct - 升压凤凰: Binding to reference members of structures?

c++ - 如何将 void* 类型转换为点云指针

c++ - 使用 {fmt} 引用一个字符串

c++ - 减轻头文件中的长限制

c++ - 如何从 IP 校验和字段计算十六进制值?

c++ - 未调用已初始化静态 thread_local 结构的构造函数和析构函数

c++ - 如何使用STL中的容器读取文件

c# - 在 c# 中等效于 'Base64' 在 c 编程中生成的加密字节的编码字符串将在 URL 查询字符串中发送