完成framebuffer创建和修正shader module 中fragment阶段的stage设置错误
parent
a0e1319aef
commit
b095fdb291
|
@ -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";
|
||||
|
||||
|
|
|
@ -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()
|
||||
|
|
Loading…
Reference in New Issue