C++ Vulkan高级渲染设计

C++ Vulkan高级渲染设计,c++,vulkan,C++,Vulkan,我终于了解了vulkan的基本概念,对主/辅命令缓冲区、渲染过程等有了一些了解。现在我想知道如何设计更高级的渲染引擎(不像示例中的简单引擎) 让我更具体地问: 如果我想渲染一个包含一些村民的小村庄(几栋房子),这些村民使用骨骼动画进行动画,那么设计方法会是什么样子?您是否会创建两个渲染器类,一个用于村民,一个用于房屋,每个类为每个对象生成一个辅助commandbuffer?如果是这样的话,如何正确使用多线程呢?如果说,每个村民都有自己的管道(不同的纹理、骨饰等),人们将如何管理这些管道 编辑:我

我终于了解了vulkan的基本概念,对主/辅命令缓冲区、渲染过程等有了一些了解。现在我想知道如何设计更高级的渲染引擎(不像示例中的简单引擎)

让我更具体地问:

如果我想渲染一个包含一些村民的小村庄(几栋房子),这些村民使用骨骼动画进行动画,那么设计方法会是什么样子?您是否会创建两个渲染器类,一个用于村民,一个用于房屋,每个类为每个对象生成一个辅助commandbuffer?如果是这样的话,如何正确使用多线程呢?如果说,每个村民都有自己的管道(不同的纹理、骨饰等),人们将如何管理这些管道


编辑:我不是在搜索“渲染引擎”,我只是想知道如何有效利用多线程,然后使用不同的“类型”模型(NPC、房屋、地形)渲染场景。

“每个村民都有自己的管道(不同的纹理、骨骼等)”为什么使用不同的纹理或矩阵集需要不同的管道?@Nicolas我最初对“多管道”的意思是:不是每个模型都有相同的顶点属性(位置、法线、切线等),这意味着每个模型至少需要生成不同的布局。但这已经解决了,因为每个模型中未包含的所有数据要么不可用,要么必须使用虚拟值进行计算。我认为这是一个非常有效的问题!在GDC有很多关于这个问题的会谈。首先,不要在Vulkan中重新实现驱动程序。它不会比现有的更好。但如果设计仔细,你可以做得更好。我最喜欢的是分离复制/计算/光栅。在延迟渲染中,着色仅为计算。阴影贴图只是光栅。@starmole:这可能是一个有用的问题,但就目前而言,它不是一个有效的问题。它太开放了,即使有OP的编辑。考虑的因素太多了,没有一个答案能够解决所有的问题。充其量,这应该转到Prog.SE,但我怀疑这对他们来说也太宽泛了。把这样的问题标记为社区维基怎么了?我还想知道人们对这个问题的答案。