(желательно простым языком).
Я не могу понять как связать в плане сущностей четыре вещи: Framebuffer, Command(Buffer/Pool), Pipeline и Render Pass. Как и что в целом между собой взаимодействует и для чего.
И правильно ли я понимаю, что Pipeline обычно создаётся под конкретный Render Pass, для которого Pipeline регистрирует получившиеся проход рендера?
RenderPass - описание того, какие рендертаргеты нужны для пасса Pipeline - код шейдеров и стейт (blendState, rasterizationState, depthStencilState), если создаешь GraphicsPipeline, то он создается под конкретный рендерпасс, так как нужно знать, какие будут аутпуты (в т.ч. для блендинга) Framebuffer - связка между RenderPass и ImageView, то есть связывает "что и как" мы рендерим и "куда" CommandBuffer - в директиксе он называется CommandList - считай std::vector, в который ты кладешь команды для рендера и исполняешь их (Submit) одним батчем
окей, наверное, понял, спасибо
Могу дополнить тем, что рендер пассы нужны чтобы описывать какие рендер таргеты нужны (форматы, базово) и что с ними делать в шейдере (очищать, загружать, ничего не делать) (теоретически, на практике на дестопе не особо), по этой причине пайплайны привязаны к рендер пассам - чтобы в шейдере знать какой формат и что с ним делать. Фреимбуфер это просто коткрентые имадж вью, удовлетворяющие требованиям рендер пасса
Обсуждают сегодня