完成framebuffer创建和修正shader module 中fragment阶段的stage设置错误
parent
a0e1319aef
commit
b095fdb291
|
@ -114,6 +114,8 @@ void HelloTriangleApplication::initVulkan() {
|
||||||
|
|
||||||
createRenderPass();
|
createRenderPass();
|
||||||
createGraphicPipeline();
|
createGraphicPipeline();
|
||||||
|
|
||||||
|
creatFramebuffers();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -133,6 +135,11 @@ void HelloTriangleApplication::cleanup(GLFWwindow* window) {
|
||||||
|
|
||||||
std::cout << "\nstart to destroy resource\n" << std::endl;
|
std::cout << "\nstart to destroy resource\n" << std::endl;
|
||||||
|
|
||||||
|
|
||||||
|
for (auto framebuffer : swapChainFramebuffers)
|
||||||
|
{
|
||||||
|
vkDestroyFramebuffer(device, framebuffer, nullptr);
|
||||||
|
}
|
||||||
|
|
||||||
vkDestroyPipeline(device, graphicsPipeline, nullptr);
|
vkDestroyPipeline(device, graphicsPipeline, nullptr);
|
||||||
vkDestroyPipelineLayout(device, pipelineLayout, 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()
|
void HelloTriangleApplication::createRenderPass()
|
||||||
{
|
{
|
||||||
|
@ -666,7 +700,7 @@ void HelloTriangleApplication::createGraphicPipeline()
|
||||||
//指定管线fragment阶段
|
//指定管线fragment阶段
|
||||||
VkPipelineShaderStageCreateInfo fragShaderStageInfo{};
|
VkPipelineShaderStageCreateInfo fragShaderStageInfo{};
|
||||||
fragShaderStageInfo.sType = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO;
|
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.module = fragShaderModule;
|
||||||
fragShaderStageInfo.pName = "main";
|
fragShaderStageInfo.pName = "main";
|
||||||
|
|
||||||
|
|
|
@ -84,6 +84,8 @@ private:
|
||||||
std::vector<VkSurfaceFormatKHR> formats;
|
std::vector<VkSurfaceFormatKHR> formats;
|
||||||
std::vector<VkPresentModeKHR> presentModes;
|
std::vector<VkPresentModeKHR> presentModes;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
std::vector<VkFramebuffer> swapChainFramebuffers;
|
||||||
|
|
||||||
|
|
||||||
GLFWwindow* initWindow(int Width, int Height);
|
GLFWwindow* initWindow(int Width, int Height);
|
||||||
|
@ -138,6 +140,8 @@ private:
|
||||||
|
|
||||||
VkShaderModule createShaderModule(const std::vector<char> code);
|
VkShaderModule createShaderModule(const std::vector<char> code);
|
||||||
|
|
||||||
|
void creatFramebuffers();
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
HelloTriangleApplication::HelloTriangleApplication()
|
HelloTriangleApplication::HelloTriangleApplication()
|
||||||
|
|
Loading…
Reference in New Issue