Vulkan Learning — 7. Дескрипторы. Запись команд в командный буфер

Итак, нам осталось рассмотреть привязку данных наших трехмерных объектов (mesh, uniform variables, textures etc.) к пайплайну. Делается это при помощи различных команд, которые записываются в командный буфер. Начнем рассмотрение записи команд в буфер с некоего базового скелета: // Record commands to the command buffers. // The commands bind resources (pipeline, uniforms, textures) and do drawing. // The usual practice is to prerecord a set of commands to the command buffer once // and then in the rendering loop submit them Читать дальше …

Vulkan Learning — 6. 3d модель. Буферы памяти и изображения

Итак, нам осталось отрисовать трехмерную модель. Прежде всего, посмотрим, что модель собой представляет (рис. 1). Модель состоит из трех кусков данных: Mesh. Модель по сути представляет собой множество треугольников. Каждый треугольник задается тремя вершинами (vertices), а каждая вершина характеризуется тремя координатами в в локальной системе координат нашей модели. Таким образом у нас должен быть массив вершин. Чтобы задать треугольник, нам надо указать три индекса (indices) в массиве вершин. Чтобы задать множество треугольников, нам нужно указать множество троек таких индексов. Таким Читать дальше …

Vulkan Learning — 5. Acquiring Swapchain Image. Submitting Command Buffer. Presenting Image. Synchronization. Swapchain Recreation

В этой заметке рассмотрим тот кусок кода, который непосредственно берет изображение из нашего свопчейна, заставляет видеопроцессор нарисовать в нем что-то и отправляет готовое изображение на экран монитора. Command Buffer Программы, которые мы пишем, используя графические API, состоят из вызовов функций. Вероятно, большинство из них (в OpenGL это команды, такие как glDrawElements, glBindBuffer, glUseProgram и другие) изменяют состояние GPU, заставляют GPU что-то нарисовать… Такие функции отправляют видеопроцессору команды что-то сделать. Во всех API эти команды буферизуются, т. е. накапливаются в некоем Читать дальше …