В конце концов, Vulkan - это прекрасный современный OO API.Все те объекты в Vulkan имеют практически только те параметры, которые они принимают.Просто говорю это, чтобы облегчить ваше обучение.Вы можете посмотреть на vkCreateX
и в значительной степени понять, что VkX
делает в Vulkan.
VkPipeline
- это контекст GPU.Думайте о GPU как о FPGA (чего нет, но потерпите меня).Выполнение vkCmdBindPipeline
установит для GPU заданную конфигурацию шлюза.Кроме GPU не FPGA - в нашем случае он устанавливает GPU в состояние, в котором он может выполнять шейдерные программы и этапы конвейера с фиксированными функциями, определяемые VkPipeline
.
VkRenderPass
, - это объект, ориентированный на данные,Это обусловлено использованием графических процессоров с мозаичной архитектурой (мобильных графических процессоров).В настольных графических процессорах он все еще может выполнять роль оракула для оптимизации и \ или разрешать частично мозаичную архитектуру (или любую другую архитектуру, которая действительно может это использовать).
Графическим процессорам с мозаичной архитектурой необходимо «загружать» образ\ буфер из оперативной памяти общего назначения в "встроенную память".По завершении они «сохраняют» свои результаты обратно в ОЗУ.
VkRenderPass
определяет, какой тип входов (вложений) потребуется.Он определяет, как они загружаются и сохраняются перед соотв.после рендеринга передать экземпляр *.У этого также есть supass.Он определяет синхронизацию между ними (заменяет vkCmdPipelineBarrier
s).И определяет тип цели, которую будет заполнять данное вложение прохода рендеринга (например, если это цветной буфер или буфер глубины).
* Экземпляр прохода рендеринга - это объект, созданный из экземпляра прохода рендеринга с помощью vkCmdBeginRenderPass
.Да, не путать, верно.