30 ferr <<
"Cannot create texture view: no image set" << std::endl;
36 ferr <<
"Cannot create texture view: image is not a VK_Image" << std::endl;
41 vk::ImageViewType viewType = vk::ImageViewType::e2D;
46 vk::ImageViewCreateInfo viewInfo;
48 viewInfo.setViewType(viewType);
51 viewInfo.components.r = vk::ComponentSwizzle::eR;
52 viewInfo.components.g = vk::ComponentSwizzle::eG;
53 viewInfo.components.b = vk::ComponentSwizzle::eB;
54 viewInfo.components.a = vk::ComponentSwizzle::eA;
56 viewInfo.subresourceRange.aspectMask = aspectMask;
57 viewInfo.subresourceRange.baseMipLevel = 0;
58 viewInfo.subresourceRange.levelCount = 1;
59 viewInfo.subresourceRange.baseArrayLayer = 0;
60 viewInfo.subresourceRange.layerCount = 1;
63 m_view =
m_ctx->getDevice().createImageView(viewInfo);
65 catch (
const std::exception& e) {
66 ferr <<
"Failed to create texture view: " << e.what() << std::endl;
72 if (format == vk::Format::eD16Unorm ||
73 format == vk::Format::eD32Sfloat ||
74 format == vk::Format::eX8D24UnormPack32) {
75 return vk::ImageAspectFlagBits::eDepth;
78 if (format == vk::Format::eD24UnormS8Uint ||
79 format == vk::Format::eD32SfloatS8Uint ||
80 format == vk::Format::eD16UnormS8Uint) {
81 return vk::ImageAspectFlagBits::eDepth | vk::ImageAspectFlagBits::eStencil;
84 if (format == vk::Format::eS8Uint) {
85 return vk::ImageAspectFlagBits::eStencil;
88 return vk::ImageAspectFlagBits::eColor;
vk::ImageAspectFlags getImageAspectFlags(vk::Format format)
VK_TextureView(VK_Context *ctx)