Рендеринг нескольких объектов с различными текстурами, буферами вершин и одинаковыми значениями в Vulkan - PullRequest
0 голосов
/ 02 сентября 2018

Мой опыт работы в OpenGL, и я пытаюсь изучать Vulkan. У меня небольшие проблемы с настройкой класса, чтобы я мог рендерить несколько объектов с разными текстурами, буферами вершин и значениями UBO. Я столкнулся с проблемой, когда два моих изображения нарисованы, но они мерцают и чередуются. Я думаю, это должно быть связано с представлением изображения после розыгрыша. Есть ли способ отложить представление изображения? Или объединить различные изображения вместе, прежде чем представить? Мой код можно найти здесь, я надеюсь, что этого достаточно, чтобы кто-то понял, что я пытаюсь сделать: https://gitlab.com/cwink/Ingin/blob/master/ingin.cpp

Спасибо! * * 1004

1 Ответ

0 голосов
/ 02 сентября 2018

Вы звоните render дважды за кадр. И render вызывает vkQueuePresentKHR, поэтому очевидно, что ваши два варианта чередуются.

Вы можете отложить презентацию, просто задержав vkQueuePresentKHR вызов. Допустим, вы хотите показать каждое изображение в течение ~ 1 с. Вы можете просто std::this_thread::sleep_for (std::chrono::seconds(1)); после каждого render звонка. (Возможно, это не самый лучший способ сделать это, но просто понять, в чем заключается ваша проблема.)

vkQueuePresentKHR не делает не никакого "слияния" для вас. Обычно вы «объединяете изображения», просто перетаскивая их в одну и ту же цепочку обмена VkImage, а затем представляете ее один раз.

...