从创建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(){}

createInstance()

createSurface()

pickPhysicalDevice()

createLogicalDevice()

createSwapChain()

createImageViews()

createRenderPass()

createGraphicsPipeline()

createFramebuffers()

createCommandPool()

createCommandBuffers()