Add create framebuffer
This commit is contained in:
@@ -394,7 +394,7 @@ void RenderEngine::create_render_pass()
|
|||||||
VK_CHECK(vkCreateRenderPass(device_, &render_pass_info, nullptr, &render_pass_));
|
VK_CHECK(vkCreateRenderPass(device_, &render_pass_info, nullptr, &render_pass_));
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderEngine::create_graphycs_pipleline()
|
void RenderEngine::create_graphycs_pipeline()
|
||||||
{
|
{
|
||||||
std::ifstream vertex_shader_file("Shaders/vertex.spv", std::ios::binary);
|
std::ifstream vertex_shader_file("Shaders/vertex.spv", std::ios::binary);
|
||||||
if (!vertex_shader_file.is_open())
|
if (!vertex_shader_file.is_open())
|
||||||
@@ -531,6 +531,25 @@ void RenderEngine::create_graphycs_pipleline()
|
|||||||
vkDestroyShaderModule(device_, fragment_shader, nullptr);
|
vkDestroyShaderModule(device_, fragment_shader, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RenderEngine::create_framebuffers()
|
||||||
|
{
|
||||||
|
framebuffers_.resize(swapchain_images_.size());
|
||||||
|
|
||||||
|
VkFramebufferCreateInfo framebuffer_info{};
|
||||||
|
framebuffer_info.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
|
||||||
|
framebuffer_info.renderPass = render_pass_;
|
||||||
|
framebuffer_info.attachmentCount = 1;
|
||||||
|
framebuffer_info.width = swapchain_extent_.width;
|
||||||
|
framebuffer_info.height = swapchain_extent_.height;
|
||||||
|
framebuffer_info.layers = 1;
|
||||||
|
|
||||||
|
for (size_t i = 0; i < framebuffers_.size(); ++i)
|
||||||
|
{
|
||||||
|
framebuffer_info.pAttachments = &swapchain_image_views_[i];
|
||||||
|
VK_CHECK(vkCreateFramebuffer(device_, &framebuffer_info, nullptr, &framebuffers_[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void RenderEngine::create_surface()
|
void RenderEngine::create_surface()
|
||||||
{
|
{
|
||||||
VK_CHECK(glfwCreateWindowSurface(instance_, window_, nullptr, &surface_));
|
VK_CHECK(glfwCreateWindowSurface(instance_, window_, nullptr, &surface_));
|
||||||
@@ -550,11 +569,14 @@ window_(window)
|
|||||||
create_swapchain(desired_present_mode);
|
create_swapchain(desired_present_mode);
|
||||||
create_image_views();
|
create_image_views();
|
||||||
create_render_pass();
|
create_render_pass();
|
||||||
create_graphycs_pipleline();
|
create_graphycs_pipeline();
|
||||||
}
|
}
|
||||||
|
|
||||||
RenderEngine::~RenderEngine()
|
RenderEngine::~RenderEngine()
|
||||||
{
|
{
|
||||||
|
for (auto& i : framebuffers_)
|
||||||
|
vkDestroyFramebuffer(device_, i, nullptr);
|
||||||
|
|
||||||
if (graphycs_pipeline_ != VK_NULL_HANDLE)
|
if (graphycs_pipeline_ != VK_NULL_HANDLE)
|
||||||
vkDestroyPipeline(device_, graphycs_pipeline_, nullptr);
|
vkDestroyPipeline(device_, graphycs_pipeline_, nullptr);
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ class RenderEngine
|
|||||||
VkRenderPass render_pass_ = VK_NULL_HANDLE;
|
VkRenderPass render_pass_ = VK_NULL_HANDLE;
|
||||||
VkPipelineLayout pipeline_layout_ = VK_NULL_HANDLE;
|
VkPipelineLayout pipeline_layout_ = VK_NULL_HANDLE;
|
||||||
VkPipeline graphycs_pipeline_ = VK_NULL_HANDLE;
|
VkPipeline graphycs_pipeline_ = VK_NULL_HANDLE;
|
||||||
|
std::vector<VkFramebuffer> framebuffers_;
|
||||||
|
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
VkResult enable_layer_validation(VkDebugUtilsMessengerCreateInfoEXT* create_info);
|
VkResult enable_layer_validation(VkDebugUtilsMessengerCreateInfoEXT* create_info);
|
||||||
@@ -74,7 +75,9 @@ class RenderEngine
|
|||||||
void create_swapchain(VkPresentModeKHR desired_present_mode);
|
void create_swapchain(VkPresentModeKHR desired_present_mode);
|
||||||
void create_image_views();
|
void create_image_views();
|
||||||
void create_render_pass();
|
void create_render_pass();
|
||||||
void create_graphycs_pipleline();
|
void create_graphycs_pipeline();
|
||||||
|
void create_framebuffers();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Can throw the exception
|
// Can throw the exception
|
||||||
RenderEngine(CoreInstance& core, GLFWwindow* window, VkPresentModeKHR desired_present_mode = VK_PRESENT_MODE_MAILBOX_KHR);
|
RenderEngine(CoreInstance& core, GLFWwindow* window, VkPresentModeKHR desired_present_mode = VK_PRESENT_MODE_MAILBOX_KHR);
|
||||||
|
|||||||
Reference in New Issue
Block a user