Как выбрать Push Constant и Uniform Buffer в Vulkan?
Если я хочу отправить матрицу mvp в каждом кадре, я прочитал несколько статей о том, что использование Push Constant быстрее.Но, насколько я знаю, если вы хотите использовать Push Constant, вы должны вызывать его каждый раз:
vkBeginCommandBuffer()
vkCmdSetViewport()
vkCmdSetScissor()
vkCmdBindPipeline()
...
vkCmdPushConstants()
vkCmdBindVertexBuffers()
vkCmdBindIndexBuffer()
vkCmdDrawIndexed()
vkEndCommandBuffer()
Как пишет https://github.com/brenwill/Vulkan/tree/master/multithreading, существует множество моделей, которые необходимоотображается так, что каждый раз процессор должен выполнять большое количество операций записи в CommandBuffer.
Если мы используем: VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT |VK_MEMORY_PROPERTY_HOST_COHERENT_BIT VkMemoryPropertyFlags Создайте UniformBuffer, тогда нам нужно только каждый раз вызывать memcpy (mvpData, & mvp, sizeof (map));скопируйте mvp в Uniform, чтобы процессор не требовался для всей записи CommandBuffer.Например: https://vulkan -tutorial.com / Loading_models
Стоит ли более интенсивно использовать VK_MEMORY_PROPERTY_HOST_COHERENT_BIT UniformBuffer, чем каждый раз использовать PushConstant для записи всего CommandBuffer?
Как мне выбрать?