Exemplo n.º 1
0
        private void createImageViews()
        {
            swapChainImageViews = new VkImageView[swapChainImages.Length];

            for (int i = 0; i < swapChainImages.Length; i++)
            {
                VkImageViewCreateInfo createInfo = new VkImageViewCreateInfo();
                createInfo.sType        = VkStructureType.VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
                createInfo.image        = swapChainImages[i];
                createInfo.viewType     = VkImageViewType.VK_IMAGE_VIEW_TYPE_2D;
                createInfo.format       = swapChainImageFormat;
                createInfo.components.r = VkComponentSwizzle.VK_COMPONENT_SWIZZLE_IDENTITY;
                createInfo.components.g = VkComponentSwizzle.VK_COMPONENT_SWIZZLE_IDENTITY;
                createInfo.components.b = VkComponentSwizzle.VK_COMPONENT_SWIZZLE_IDENTITY;
                createInfo.components.a = VkComponentSwizzle.VK_COMPONENT_SWIZZLE_IDENTITY;
                createInfo.subresourceRange.aspectMask     = VkImageAspectFlagBits.VK_IMAGE_ASPECT_COLOR_BIT;
                createInfo.subresourceRange.baseMipLevel   = 0;
                createInfo.subresourceRange.levelCount     = 1;
                createInfo.subresourceRange.baseArrayLayer = 0;
                createInfo.subresourceRange.layerCount     = 1;

                VkImageView imageView = null;
                VkResult    result    = Vulkan.vkCreateImageView(device, createInfo, default(VkAllocationCallbacks), out imageView);
                if (result != VkResult.VK_SUCCESS)
                {
                    throw Program.Throw("failed to create image views!", result);
                }
                swapChainImageViews[i] = imageView;
            }
        }