【发布时间】:2023-03-17 10:11:01
【问题描述】:
我是 vulkan 的新手。问题在于变换对象。使用 DX11 和 OpenGL 时,我曾经更新统一缓冲区,然后将绘图命令发送到 gpu,但在 vulkan 中,所有命令都是预先记录的。所以我看不出有什么办法可以做到这一点。我在网上读到,为了转换每个对象,我可以使用一组统一缓冲区并在绘制时从中索引。这是在 vulkan 中转换每个对象的唯一方法吗?
如果是,那么 vulkan 不是使用比旧 API 更多的内存吗?较旧的 API 可以有一个统一的缓冲区,并在绘制调用之前对其进行更新,但在 vulkan 中,我们为每个对象使用了一个缓冲区。 Vulkan 作为一种高性能 API 很受欢迎,但较旧的 API 使用的内存更少。
如果不是,我怎样才能更有效地做到这一点? 谢谢。
【问题讨论】:
-
更新统一缓冲区也是一个命令,不是吗?
-
是的,但我们可以为此使用单独的命令缓冲区。
-
你的制服到底有多大,你甚至担心记忆?当你开始上传你的 4k 纹理或其他东西时,几 kB 不会为你节省。
-
我们也可以使用单独的命令缓冲区来绘制对象,但是命令缓冲区会花费更多的内存
-
现在只是转换矩阵:D
标签: vulkan