vulakn教程--Drawing a Triangle--Presentation-- Image views
2016-09-09 20:52
369 查看
原文地址: vulkan-tutorial
这一部分我们将创建
需要填充的结构
我们使用
现在我们创建
整体代码如下:
原文源码: source code
为什么csdn 传不了资源了???
Image views
为了使用VkImage,不管是在Swap Chain 还是在Pipeline 中,我们都必须创建
VkImageView,就如同它的字面意思一样,
imageView是image的一个 view.他描述了我们如何访问image、访问image的哪一部分等。
这一部分我们将创建
VkImageViews, 并把它用作 color targets.
std::vector<VDeleter<VkImageView>> swapChainImageViews; //声明
需要填充的结构
VkImageViewCreateInfo:
typedef struct VkImageViewCreateInfo { VkStructureType sType const void* pNext; VkImageViewCreateFlags flags; VkImage image; VkImageViewType viewType; VkFormat format; VkComponentMapping components; VkImageSubresourceRange subresourceRange; } VkImageViewCreateInfo;
我们使用
for循环来为每一个
Image创建
ImageView:
for (uint32_t i = 0; i < swapChainImages.size(); i++) { ... }
VkImageViewCreateInfo createInfo = {}; createInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; createInfo.image = swapChainImages[i]; createInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; createInfo.format = swapChainImageFormat;
viewType有
VK_IMAGE_VIEW_TYPE_1/2/3D。
createInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; createInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; createInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY; createInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY;
Component采用默认值。
createInfo.subresourceRange.aspectMask = VK_IMAGE_ASPECT_COLOR_BIT; createInfo.subresourceRange.baseMipLevel = 0; createInfo.subresourceRange.levelCount = 1; createInfo.subresourceRange.baseArrayLayer = 0; createInfo.subresourceRange.layerCount = 1;
subresourceRange描述image的使用目的和要被访问的部分。我们的image 将被用作color targets ,不使用
mipmapping和
multiplayers。如果你要创建3D应用就是用
mutiplayers,可以为一个image创建多个
imageView表示左眼和右眼的不同访问层次。
现在我们创建
VkImageView:
if (vkCreateImageView(device, &createInfo, nullptr,&swapChainImageViews[i]) != VK_SUCCESS) { throw std::runtime_error("failed to create image views!"); }
整体代码如下:
void createImageViews() {
swapChainImageViews.resize(swapChainImages.size(),VDeleter<VkImageVie w> {device, vkDestroyImageView});
for (uint32_t i = 0; i < swapChainImages.size(); i++) {
VkImageViewCreateInfo createInfo = {}; createInfo.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO; createInfo.image = swapChainImages[i]; createInfo.viewType = VK_IMAGE_VIEW_TYPE_2D; createInfo.format = swapChainImageFormat;
createInfo.components.r = VK_COMPONENT_SWIZZLE_IDENTITY; createInfo.components.g = VK_COMPONENT_SWIZZLE_IDENTITY; createInfo.components.b = VK_COMPONENT_SWIZZLE_IDENTITY; createInfo.components.a = VK_COMPONENT_SWIZZLE_IDENTITY;createInfo.subresourceRange.aspectMask =
VK_IMAGE_ASPECT_COLOR_BIT;
createInfo.subresourceRange.baseMipLevel = 0;
createInfo.subresourceRange.levelCount = 1;
createInfo.subresourceRange.baseArrayLayer = 0;
createInfo.subresourceRange.layerCount = 1
if (vkCreateImageView(device, &createInfo, nullptr, &swapChainImageViews[i]) != VK_SUCCESS) {
throw std::runtime_error("failed to create image views!");
}
}
}
原文源码: source code
为什么csdn 传不了资源了???
相关文章推荐
- vulakn教程--Drawing a Triangle--Presentation--Window surface
- vulakn教程--Drawing a Triangle--Presentation--SwapChain
- vulakn教程--Drawing a Triangle--Draw--Render and presentation
- vulakn教程--Drawing a Triangle--Set up--Validation layers
- vulakn教程--Drawing a Triangle--Pipeline--Shader Module
- vulakn教程--Drawing a Triangle--Draw--CommandBuffer
- vulakn教程--Drawing a Triangle--Pipeline--Introduction
- vulakn教程--Drawing a Triangle--Draw--Framebuffer
- vulakn教程--Drawing a Triangle--Pipeline--Render passes
- vulakn教程--Drawing a Triangle--Set up--Physical Device and Queue Family
- vulakn教程--Drawing a Triangle--Set up--Logical Device
- vulakn教程--Drawing a Triangle--Set up--Instance
- vulakn教程--Drawing a Triangle--Pipeline--Fixed function
- DirectX 教程: DirectX Tutorial - Direct3D: Drawing a Triangle
- vulakn教程--Drawing a Triangle--Set up--Base code
- 第二章 创建webGL设备和绘制缓冲区呈现 Context Creation and Drawing Buffer Presentation
- Android OpenGL ES 开发教程(11):绘制三角形Triangle
- Windows Presentation Foundation (WPF) 3D 教程(一)---声明
- Triangle.NET 使用教程(一)
- PPT组件Spire.Presentation教程:在C#中将PPT文档转换为EMF图像