1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// Create Framebuffer (Note: VkImageView needs to be kept alive!)
int CreateFrameBuffer(VkDevice device, VkImage images, VkRenderPass renderPass, VkImageView* pView, VkFramebuffer* pFrameBuffer)
{
	VkResult res;

	VkImageViewCreateInfo viewInfo = {};
	viewInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
	viewInfo.format = VK_FORMAT_B8G8R8A8_UNORM;
	viewInfo.image = images;
	viewInfo.viewType = VK_IMAGE_VIEW_TYPE_2D;
	viewInfo.components = { VK_COMPONENT_SWIZZLE_R ,VK_COMPONENT_SWIZZLE_G ,VK_COMPONENT_SWIZZLE_B ,VK_COMPONENT_SWIZZLE_A };
	viewInfo.subresourceRange = { VK_IMAGE_ASPECT_COLOR_BIT,0,1,0,1 };

	VkImageView view;
	res = vkCreateImageView(device, &viewInfo, 0, &view);
	if (res != VK_SUCCESS)
		return res;

	*pView = view;

	VkFramebufferCreateInfo frameInfo = {};
	frameInfo.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
	frameInfo.width = 1280;
	frameInfo.height = 720;
	frameInfo.layers = 1;
	frameInfo.renderPass = renderPass;
	frameInfo.pAttachments = &view;
	frameInfo.attachmentCount = 1;

	VkFramebuffer frameBuffer;
	res = vkCreateFramebuffer(device, &frameInfo, 0, &frameBuffer);

	//vkDestroyImageView(device, view, 0);

	*pFrameBuffer = frameBuffer;

	return res;
}