完成framebuffer创建和修正shader module 中fragment阶段的stage设置错误

master
InkSoul 2024-03-08 22:29:35 +08:00
parent a0e1319aef
commit b095fdb291
2 changed files with 39 additions and 1 deletions

View File

@ -114,6 +114,8 @@ void HelloTriangleApplication::initVulkan() {
createRenderPass();
createGraphicPipeline();
creatFramebuffers();
}
@ -133,6 +135,11 @@ void HelloTriangleApplication::cleanup(GLFWwindow* window) {
std::cout << "\nstart to destroy resource\n" << std::endl;
for (auto framebuffer : swapChainFramebuffers)
{
vkDestroyFramebuffer(device, framebuffer, nullptr);
}
vkDestroyPipeline(device, graphicsPipeline, nullptr);
vkDestroyPipelineLayout(device, pipelineLayout, nullptr);
@ -606,6 +613,33 @@ VkShaderModule HelloTriangleApplication::createShaderModule(const std::vector<ch
}
void HelloTriangleApplication::creatFramebuffers()
{
swapChainFramebuffers.resize(swapChainImageViews.size());
for (size_t i = 0; i <swapChainImageViews.size(); i++)
{
VkImageView attachments[] = {
swapChainImageViews[i]
};
VkFramebufferCreateInfo framebufferInfo{};
framebufferInfo.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
framebufferInfo.renderPass = renderPass;
framebufferInfo.attachmentCount = 1;
framebufferInfo.pAttachments = attachments;
framebufferInfo.width = swapChainExtent.width;
framebufferInfo.height = swapChainExtent.height;
framebufferInfo.layers = 1;
if (vkCreateFramebuffer(device,&framebufferInfo,nullptr,&swapChainFramebuffers[i]) != VK_SUCCESS)
{
throw std::runtime_error("failed to create framebuffer in createFramebuffer");
}
}
}
void HelloTriangleApplication::createRenderPass()
{
@ -666,7 +700,7 @@ void HelloTriangleApplication::createGraphicPipeline()
//指定管线fragment阶段
VkPipelineShaderStageCreateInfo fragShaderStageInfo{};
fragShaderStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
fragShaderStageInfo.stage = VK_SHADER_STAGE_VERTEX_BIT;
fragShaderStageInfo.stage = VK_SHADER_STAGE_FRAGMENT_BIT;
fragShaderStageInfo.module = fragShaderModule;
fragShaderStageInfo.pName = "main";

View File

@ -84,6 +84,8 @@ private:
std::vector<VkSurfaceFormatKHR> formats;
std::vector<VkPresentModeKHR> presentModes;
};
std::vector<VkFramebuffer> swapChainFramebuffers;
GLFWwindow* initWindow(int Width, int Height);
@ -138,6 +140,8 @@ private:
VkShaderModule createShaderModule(const std::vector<char> code);
void creatFramebuffers();
};
HelloTriangleApplication::HelloTriangleApplication()