vulakn教程--Drawing a Triangle--Draw--Framebuffer
2016-09-19 20:49
309 查看
原文地址 : vulkan-tutorial
我们将
先定义一个函数,然后再填写关键语句。
原文源码 : source code
Framebuffers
我们已在之前的章节中多次提到FrameBuffer并且在创建Render Pass时,我们期望拥有一个和Swap Chain 里image具有相同格式(format)的
FrameBuffer。 接下来我们就将创建这种
FrameBufefr.
我们将
attachments包裹在
FrameBuffer中,
FrameBuffer通过引用
VkImageView来关联所有的
attachments。在我们案例中只有一个
attachment:
color attachment。然而作为
attachment的
image取决于在显示的时候Swap Chain 到底返回的是哪一个
image,这就意味着我们需要为Swap Chain里的每一个image 创建一个
FrameBuffer。
std::vector<VDeleter<VkFramebuffer>> swapChainFramebuffers; void createFramebuffers() { swapChainFramebuffers.resize(swapChainImageViews.size(), VDeleter<VkFramebuffer> {device, vkDestroyFramebuffer}); }
先定义一个函数,然后再填写关键语句。
// 遍历每一个imageView (image) 为它创建Framebuffer 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; // 这里的 attachmentCount 与pAttachments 和Render Pass 里的 // pAttachment 相关联。 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!"); } }
原文源码 : source code
相关文章推荐
- vulakn教程--Drawing a Triangle--Draw--Render and presentation
- vulakn教程--Drawing a Triangle--Draw--CommandBuffer
- vulakn教程--Drawing a Triangle--Pipeline--Render passes
- vulakn教程--Drawing a Triangle--Presentation-- Image views
- vulakn教程--Drawing a Triangle--Pipeline--Fixed function
- vulakn教程--Drawing a Triangle--Set up--Physical Device and Queue Family
- vulakn教程--Drawing a Triangle--Set up--Logical Device
- vulakn教程--Drawing a Triangle--Presentation--Window surface
- vulakn教程--Drawing a Triangle--Set up--Instance
- vulakn教程--Drawing a Triangle--Pipeline--Shader Module
- vulakn教程--Drawing a Triangle--Set up--Validation layers
- vulakn教程--Drawing a Triangle--Pipeline--Introduction
- vulakn教程--Drawing a Triangle--Presentation--SwapChain
- vulakn教程--Drawing a Triangle--Set up--Base code
- DirectX 教程: DirectX Tutorial - Direct3D: Drawing a Triangle
- DroisDraw教程(一)
- Android OpenGL ES 开发教程(11):绘制三角形Triangle
- "https://open.gl/"教程之Drawing Polygons源码(freeglut版)
- DroisDraw教程(一)
- wp7 webbrowser 终于支持canvas.drawImage 及网上坑爹的使用教程