@@ -223,13 +223,18 @@ void HelloTriangleApplication::initVulkan() {
223
223
createImageViews ();
224
224
createRenderPass ();
225
225
createGraphicsPipeline ();
226
+ createFramebuffers ();
226
227
}
227
228
228
229
void HelloTriangleApplication::mainLoop () {
229
230
230
231
}
231
232
232
233
void HelloTriangleApplication::cleanUp () {
234
+ for (size_t i = 0 ; i < swapchainFramebuffers.size (); i++) {
235
+ vkDestroyFramebuffer (device, swapchainFramebuffers[i], nullptr );
236
+ }
237
+
233
238
vkDestroyPipeline (device, graphicsPipeline, nullptr );
234
239
vkDestroyPipelineLayout (device, pipelineLayout, nullptr );
235
240
vkDestroyRenderPass (device, renderPass, nullptr );
@@ -606,6 +611,30 @@ void HelloTriangleApplication::createGraphicsPipeline() {
606
611
vkDestroyShaderModule (device, fragmentShaderModule, nullptr );
607
612
}
608
613
614
+ void HelloTriangleApplication::createFramebuffers () {
615
+ swapchainFramebuffers.resize (swapchainImageViews.size ());
616
+
617
+ for (size_t i = 0 ; i < swapchainImageViews.size (); i++) {
618
+ VkImageView attachments[] = {
619
+ swapchainImageViews[i]
620
+ };
621
+
622
+ VkFramebufferCreateInfo framebufferInfo = {};
623
+ framebufferInfo.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
624
+ framebufferInfo.renderPass = renderPass;
625
+ framebufferInfo.attachmentCount = 1 ;
626
+ framebufferInfo.pAttachments = attachments;
627
+ framebufferInfo.width = swapchainExtent.width ;
628
+ framebufferInfo.height = swapchainExtent.height ;
629
+ framebufferInfo.layers = 1 ;
630
+
631
+ if (vkCreateFramebuffer (device, &framebufferInfo, nullptr , &swapchainFramebuffers[i])
632
+ != VK_SUCCESS) {
633
+ throw std::runtime_error (" failed to create framebuffer!" );
634
+ }
635
+ }
636
+ }
637
+
609
638
std::vector<char > HelloTriangleApplication::readAsset (const char *name) {
610
639
AAsset *file = AAssetManager_open (assetManager, name, AASSET_MODE_BUFFER);
611
640
size_t len = AAsset_getLength (file);
0 commit comments