[WIP] Texture support
This commit is contained in:
@@ -34,6 +34,52 @@ namespace openVulkanoCpp::Vulkan
|
||||
{}, nullptr, nullptr, imgMemBarrier);
|
||||
}
|
||||
|
||||
void Image::Init(const Device* device, const vk::Extent3D& resolution)
|
||||
{
|
||||
this->device = device->device;
|
||||
|
||||
vk::ImageCreateInfo imgCreateInfo;
|
||||
imgCreateInfo.imageType = vk::ImageType::e2D;
|
||||
imgCreateInfo.extent = resolution;
|
||||
imgCreateInfo.mipLevels = 1;
|
||||
imgCreateInfo.arrayLayers = 1;
|
||||
imgCreateInfo.format = vk::Format::eR8G8B8Srgb;
|
||||
imgCreateInfo.tiling = vk::ImageTiling::eOptimal;
|
||||
imgCreateInfo.initialLayout = vk::ImageLayout::eUndefined;
|
||||
imgCreateInfo.usage = vk::ImageUsageFlagBits::eTransferDst | vk::ImageUsageFlagBits::eSampled;
|
||||
imgCreateInfo.sharingMode = vk::SharingMode::eExclusive;
|
||||
imgCreateInfo.samples = vk::SampleCountFlagBits::e1;
|
||||
|
||||
vk::ImageViewCreateInfo imgViewCreateInfo;
|
||||
imgViewCreateInfo.image = image;
|
||||
imgViewCreateInfo.format = imgCreateInfo.format;
|
||||
imgViewCreateInfo.viewType = vk::ImageViewType::e2D;
|
||||
imgViewCreateInfo.subresourceRange.aspectMask = vk::ImageAspectFlagBits::eColor;
|
||||
imgViewCreateInfo.subresourceRange.baseMipLevel = 0;
|
||||
imgViewCreateInfo.subresourceRange.levelCount = 1;
|
||||
imgViewCreateInfo.subresourceRange.baseArrayLayer = 0;
|
||||
imgViewCreateInfo.subresourceRange.levelCount = 1;
|
||||
|
||||
Init(device, imgCreateInfo, imgViewCreateInfo);
|
||||
CreateSampler();
|
||||
}
|
||||
|
||||
void Image::CreateSampler()
|
||||
{
|
||||
vk::SamplerCreateInfo samplerCreateInfo;
|
||||
samplerCreateInfo.magFilter = vk::Filter::eLinear;
|
||||
samplerCreateInfo.minFilter = vk::Filter::eLinear;
|
||||
samplerCreateInfo.mipmapMode = vk::SamplerMipmapMode::eLinear;
|
||||
samplerCreateInfo.addressModeU = vk::SamplerAddressMode::eClampToEdge;
|
||||
samplerCreateInfo.addressModeV = vk::SamplerAddressMode::eClampToEdge;
|
||||
samplerCreateInfo.addressModeW = vk::SamplerAddressMode::eClampToEdge;
|
||||
samplerCreateInfo.borderColor = vk::BorderColor::eFloatTransparentBlack;
|
||||
samplerCreateInfo.unnormalizedCoordinates = false;
|
||||
samplerCreateInfo.compareEnable = false;
|
||||
|
||||
sampler = this->device.createSampler(samplerCreateInfo);
|
||||
}
|
||||
|
||||
void Image::Close()
|
||||
{
|
||||
if(sampler)
|
||||
|
||||
Reference in New Issue
Block a user