diff --git a/3rdParty/msdf/CMakeLists.txt b/3rdParty/msdf/CMakeLists.txt index 1b64a28..c43c63b 100644 --- a/3rdParty/msdf/CMakeLists.txt +++ b/3rdParty/msdf/CMakeLists.txt @@ -93,6 +93,7 @@ function(LinkMsdf TARGET) if (FREETYPE_BUILT_FROM_SOURCES) target_include_directories(${TARGET} PUBLIC ${FREETYPE_INCLUDE_DIR}) else() + find_package(Freetype REQUIRED) target_include_directories(${TARGET} PUBLIC ${FREETYPE_INCLUDE_DIRS}) endif() endif() diff --git a/openVulkanoCpp/Base/Render/RenderResource.hpp b/openVulkanoCpp/Base/Render/RenderResource.hpp index 93e62a6..03f1f05 100644 --- a/openVulkanoCpp/Base/Render/RenderResource.hpp +++ b/openVulkanoCpp/Base/Render/RenderResource.hpp @@ -167,6 +167,11 @@ namespace OpenVulkano bool HasRenderResource() const { return renderResource; } + RenderResourceHolder& operator =(const RenderResourceHolder& copy) noexcept + { + renderResource.Release(); + } + RenderResourceHolder& operator =(RenderResourceHolder&& move) noexcept { renderResource = std::move(move.renderResource); diff --git a/openVulkanoCpp/Scene/TextDrawable.cpp b/openVulkanoCpp/Scene/TextDrawable.cpp index d9fd170..5413368 100644 --- a/openVulkanoCpp/Scene/TextDrawable.cpp +++ b/openVulkanoCpp/Scene/TextDrawable.cpp @@ -93,7 +93,6 @@ namespace OpenVulkano::Scene m_atlasData = std::make_shared(); if (isPacked) { - m_atlasData->texture = Texture(); m_material.texture = &m_atlasData->texture; m_atlasData->img = Image::IImageLoader::loadData((const uint8_t*) atlasMetadata.Data(), offsetToMetadata); diff --git a/openVulkanoCpp/Vulkan/Scene/LabelDrawableVulkanEncoder.cpp b/openVulkanoCpp/Vulkan/Scene/LabelDrawableVulkanEncoder.cpp index e7ff24b..7371174 100644 --- a/openVulkanoCpp/Vulkan/Scene/LabelDrawableVulkanEncoder.cpp +++ b/openVulkanoCpp/Vulkan/Scene/LabelDrawableVulkanEncoder.cpp @@ -23,7 +23,7 @@ namespace OpenVulkano::Vulkan if (labelDrawable->IsBillboard()) { OpenVulkano::Scene::UniformBuffer* buffer = labelDrawable->GetBillboardBuffer(); - VulkanUniformBuffer* vkBuffer = static_cast(buffer->renderBuffer); + VulkanUniformBuffer* vkBuffer = buffer->GetRenderResource(); if (!vkBuffer) { vkBuffer = drawContext->renderer->GetResourceManager().PrepareUniformBuffer(buffer); @@ -32,7 +32,7 @@ namespace OpenVulkano::Vulkan } OpenVulkano::Scene::UniformBuffer* labelBuffer = labelDrawable->GetLabelBuffer(); - VulkanUniformBuffer* vkBuffer = static_cast(labelBuffer->renderBuffer); + VulkanUniformBuffer* vkBuffer = labelBuffer->GetRenderResource(); if (!vkBuffer) { vkBuffer = drawContext->renderer->GetResourceManager().PrepareUniformBuffer(labelBuffer); @@ -57,7 +57,7 @@ namespace OpenVulkano::Vulkan OpenVulkano::Scene::Shader* shader = entry.GetShader(); drawContext->EncodeShader(shader); Geometry* mesh = entry.GetMesh(); - VulkanGeometry* renderGeo = static_cast(mesh->renderGeo); + VulkanGeometry* renderGeo = mesh->GetRenderResource(); if (!renderGeo) { renderGeo = drawContext->renderer->GetResourceManager().PrepareGeometry(mesh); @@ -77,7 +77,7 @@ namespace OpenVulkano::Vulkan { if (buffer) { - VulkanUniformBuffer* vkBuffer = static_cast(buffer->renderBuffer); + VulkanUniformBuffer* vkBuffer = buffer->GetRenderResource(); if (!vkBuffer) { vkBuffer = drawContext->renderer->GetResourceManager().PrepareUniformBuffer(buffer); @@ -90,11 +90,11 @@ namespace OpenVulkano::Vulkan { if (Texture* texture = material->texture) { - VulkanTexture* renderTexture = static_cast(texture->renderTexture); + VulkanTexture* renderTexture = texture->GetRenderResource(); if (!renderTexture) { drawContext->renderer->GetResourceManager().PrepareMaterial(entry.GetMaterial()); - renderTexture = static_cast(texture->renderTexture); + renderTexture = texture->GetRenderResource(); } renderTexture->Record(drawContext); }