在 Vulkan 中绘制多个对象
Drawing multiple objects in Vulkan
我一直在努力创建一个带有 Vulkan 渲染后端的游戏,因此我需要能够在屏幕上绘制多个对象。我以前使用过OpenGL,所以我在图形编程方面有一点经验。
我已经在 https://vulkan-tutorial.com/上完成了教程,我或多或少地理解了基本思想,但是有很多活动部件,我发现很难理解这一切。到目前为止,我能够使用 UBO 绘制一个具有任意数量顶点但不超过 1 个的单个对象,因为我不知道将什么从主渲染器对象解耦为可绘制对象。
我真的不知道哪些部分需要存在于vulkan-context
对象中,以及哪些部分在每个可绘制对象上是独立的/活的。我尝试做一些研究,我能找到的大部分内容都与实例化有关,这还不是我真正想要做的。
如何组织它有很多选择,所以没有单一的答案。但一般来说,可绘制的场景对象需要
- 描述绘制对象时要使用的状态和着色器的
VkPipeline
。 - 将着色器中的资源引用绑定到 Vulkan API 对象中的状态和数据
VkDescriptorSets
。 - 要用于可绘制对象的实际数据或包含数据的对象(图像、缓冲区(。
对于后两个,每个可绘制对象不一定具有不同的 API 对象。相反,可绘制对象可能只包含数据,并且您获取一个 API 对象(如描述符集(并在每次绘制时填充它,然后回收它。或者,您可能有一个由多个可绘制对象共享的VkBuffer
,每个可绘制对象的几何图形占用缓冲区的子范围。
另一方面,您的"上下文"将具有VkDevice
、VkQueue
(s(和各种池对象,如命令缓冲池、描述符池。通常,您还需要某种方法来跟踪命令缓冲区完成时应回收或销毁的内容(通常是帧粒度(。
相关文章:
- 无法使用VAO和EBO(openGL)绘制多个对象
- 绘制一个对象,比较模具缓冲区的两个不同值
- 在 Vulkan 中绘制多个对象
- 当我尝试绘制 sf::Text 对象时,SFML 中的分段错误
- Opencv,在图像中的对象周围绘制一个框
- 将自定义可绘制对象存储在数组中会导致绘制时出现分割错误
- 使用OpenGL绘制更多对象时,性能会降低
- 如何在调用函数时将对象绘制到 sfml 窗口上
- SFML 2.4.2 在绘制 sf::Text 对象之前获取本地边界
- 如何确定我跟踪的对象球是否越过我绘制的线
- SFML 对象在重新初始化其父类时不会绘制
- SFML在另一个对象上方绘制对象
- 尝试使用对象作为输入来绘制QT创建者
- 如何使用多个VAO和VBO在OpenGL中绘制多个对象
- 为什么我的三角形对象没有被绘制?
- 为什么我的 OpenGL 对象相对于最后一个绘制的对象绘制
- 如何使用Qt在运行时从一个对象绘制到另一个对象的线条(或箭头)
- OpenGL 不会为不在命名空间中的对象绘制多边形
- 为同一类的两个对象绘制不同的图像
- 多对象绘制(OpenGL)