Texture implementation basics
This commit is contained in:
@@ -148,7 +148,7 @@ namespace OpenVulkano::Vulkan
|
||||
const std::unique_lock lock(mutex);
|
||||
if (material->texture && !material->texture->renderTexture)
|
||||
{
|
||||
material->texture->renderTexture = PrepareTexture(material->texture);
|
||||
PrepareTexture(material->texture);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -291,6 +291,21 @@ namespace OpenVulkano::Vulkan
|
||||
vk::BufferImageCopy region(0, 0, 0, { vk::ImageAspectFlagBits::eColor, 0, 0, 1 }, { 0, 0, 0 }, image->extent);
|
||||
cmdBuffers[currentBuffer].copyBufferToImage(uploadBuffer->buffer, image->image, vk::ImageLayout::eTransferDstOptimal, 1, ®ion);
|
||||
|
||||
vk::ImageMemoryBarrier barrier {};
|
||||
barrier.oldLayout = vk::ImageLayout::eUndefined;
|
||||
barrier.newLayout = vk::ImageLayout::eShaderReadOnlyOptimal;
|
||||
barrier.image = image->image;
|
||||
barrier.subresourceRange.aspectMask = vk::ImageAspectFlagBits::eColor;
|
||||
barrier.subresourceRange.baseMipLevel = 0;
|
||||
barrier.subresourceRange.levelCount = 1;
|
||||
barrier.subresourceRange.baseArrayLayer = 0;
|
||||
barrier.subresourceRange.layerCount = 1;
|
||||
barrier.setSrcAccessMask({});
|
||||
barrier.setDstAccessMask(vk::AccessFlagBits::eTransferWrite);
|
||||
|
||||
// TODO set access masks for mip and array layers
|
||||
cmdBuffers[currentBuffer].pipelineBarrier(vk::PipelineStageFlagBits::eTopOfPipe, vk::PipelineStageFlagBits::eTransfer, {}, 0, nullptr, 0, nullptr, 1, &barrier );
|
||||
|
||||
FreeBuffer(uploadBuffer);
|
||||
}
|
||||
|
||||
@@ -365,8 +380,7 @@ namespace OpenVulkano::Vulkan
|
||||
{
|
||||
VulkanTexture* vkTexture = new VulkanTexture();
|
||||
|
||||
vkTexture->Init(this, texture);
|
||||
//vkTexture->
|
||||
vkTexture->Init(this, texture, GetDescriptorLayoutSet(Scene::Texture::DESCRIPTOR_SET_LAYOUT_BINDING), Scene::Texture::DESCRIPTOR_SET_LAYOUT_BINDING, 2);
|
||||
|
||||
return vkTexture;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ namespace OpenVulkano
|
||||
class ResourceManager : public ICloseable, public IShaderOwner
|
||||
{
|
||||
friend UniformBuffer;
|
||||
friend VulkanTexture;
|
||||
|
||||
Context* context;
|
||||
vk::Device device = nullptr;
|
||||
|
||||
Reference in New Issue
Block a user