从创建Vulkan实例到重构交换链笔记梳理。
Introduction - Vulkan Tutorial
到目前的成员变量:
GLFWwindow* window;//GLFW 窗口
VkInstance instance;//VK实例
VkDebugUtilsMessengerEXT debugMessenger;
VkSurfaceKHR surface;//窗口信息
VkSwapchainKHR swapChain;//交换链对象,图像队列大小,格式,呈现模式(缓冲形式)
std::vector<VkImage> swapChainImages;//交换链中的图像
VkFormat swapChainImageFormat;//交换链图像格式
VkExtent2D swapChainExtent;//交换链图像范围
std::vector<VkImageView> swapChainImageViews;//交换链中的图像
std::vector<VkFramebuffer> swapChainFramebuffers;//帧缓冲区
VkCommandPool commandPool;//管理主存,分配CommandBuffers
std::vector<VkCommandBuffer> commandBuffers;//命令缓冲区
VkRenderPass renderPass;
VkPipelineLayout pipelineLayout;
VkPipeline graphicsPipeline;//图形管线
VkPhysicalDevice physicalDevice = VK_NULL_HANDLE;//物理设备
VkDevice device;//逻辑设备
VkQueue graphicsQueue;//图形队列
VkQueue presentQueue;//呈现队列
VkSemaphore imageAvailableSemaphore;//开始渲染通知信号量
VkSemaphore renderFinishedSemaphore;//渲染结束呈现开始信号量
下面 梳理一下 是 绘制初始化 流程(不包含验证层):
void initVulkan() {
createInstance();
setupDebugCallback();
createSurface();
pickPhysicalDevice();
createLogicalDevice();
createSwapChain();
createImageViews();
createRenderPass();
createGraphicsPipeline();
createFramebuffers();
createCommandPool();
createCommandBuffers();
createSemaphores();
}
void recordCommandBuffer(){}
void drawFrame(){}
void mainLoop(){}