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

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

Спасибо!

Если вы считаете, что это проблема с презентацией, прочтите этот (и следующие) руководства: software.intel.com/en-us/articles/…

Ekzuzy 02.09.2018 10:12

Но похоже, что вы правильно синхронизируете рендеринг и презентацию. Есть ли какие-либо сообщения об ошибках, создаваемые уровнями проверки?

Ekzuzy 02.09.2018 10:20
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
479
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

рисование в том же vkImage в качестве отдельных проходов рендеринга не будет работать, потому что он очищает привязку цвета как операцию загрузки.

ratchet freak 02.09.2018 12:56

@ratchetfreak Вообще говоря. Я предполагаю, что то, что нужно сделать, чтобы это сработало, будет сделано. Например. имея для этого один проход рендеринга. Я надеюсь, что моего пятерки хватит, чтобы ОП отбросил некоторые из своих неправильных предположений и предубеждений.

krOoze 02.09.2018 16:39

@krOoze Спасибо за ответ, вы имеете в виду отдельный проход рендеринга только для очистки, а затем еще один без очистки для рисования объектов? Я также не уверен, что это сработает на 100%, поскольку я пытаюсь использовать MVP для перевода изображения в разные координаты, и кажется, что единообразные данные связаны с рисуемым изображением.

Cody Wink 02.09.2018 19:54

@CodyWink Я имел в виду один проход рендеринга для всего в приведенном выше комментарии в качестве примера. Но это деталь реализации; много способов добиться того же ...

krOoze 02.09.2018 22:21

Другие вопросы по теме