diff --git a/include/Nazara/Graphics/GuillotineTextureAtlas.hpp b/include/Nazara/Graphics/GuillotineTextureAtlas.hpp index 04197a41b..fa82c8056 100644 --- a/include/Nazara/Graphics/GuillotineTextureAtlas.hpp +++ b/include/Nazara/Graphics/GuillotineTextureAtlas.hpp @@ -16,6 +16,8 @@ class NAZARA_API NzGuillotineTextureAtlas : public NzGuillotineImageAtlas NzGuillotineTextureAtlas() = default; ~NzGuillotineTextureAtlas() = default; + nzUInt32 GetStorage() const; + private: NzAbstractImage* ResizeImage(NzAbstractImage* oldImage, const NzVector2ui& size) const override; }; diff --git a/include/Nazara/Utility/AbstractAtlas.hpp b/include/Nazara/Utility/AbstractAtlas.hpp index 2d290153b..3dabff1eb 100644 --- a/include/Nazara/Utility/AbstractAtlas.hpp +++ b/include/Nazara/Utility/AbstractAtlas.hpp @@ -10,6 +10,7 @@ #include #include #include +#include #include class NzAbstractImage; @@ -29,6 +30,7 @@ class NAZARA_API NzAbstractAtlas virtual void Free(NzSparsePtr rects, NzSparsePtr layers, unsigned int count) = 0; virtual NzAbstractImage* GetLayer(unsigned int layerIndex) const = 0; virtual unsigned int GetLayerCount() const = 0; + virtual nzUInt32 GetStorage() const = 0; virtual bool Insert(const NzImage& image, NzRectui* rect, bool* flipped, unsigned int* layerIndex) = 0; void RemoveListener(Listener* font) const; diff --git a/include/Nazara/Utility/GuillotineImageAtlas.hpp b/include/Nazara/Utility/GuillotineImageAtlas.hpp index 22c50fdcb..bf65129f6 100644 --- a/include/Nazara/Utility/GuillotineImageAtlas.hpp +++ b/include/Nazara/Utility/GuillotineImageAtlas.hpp @@ -28,6 +28,7 @@ class NAZARA_API NzGuillotineImageAtlas : public NzAbstractAtlas NzGuillotineBinPack::GuillotineSplitHeuristic GetRectSplitHeuristic() const; NzAbstractImage* GetLayer(unsigned int layerIndex) const; unsigned int GetLayerCount() const; + nzUInt32 GetStorage() const; bool Insert(const NzImage& image, NzRectui* rect, bool* flipped, unsigned int* layerIndex); diff --git a/src/Nazara/Graphics/Graphics.cpp b/src/Nazara/Graphics/Graphics.cpp index 0048404ad..32388e252 100644 --- a/src/Nazara/Graphics/Graphics.cpp +++ b/src/Nazara/Graphics/Graphics.cpp @@ -95,6 +95,10 @@ void NzGraphics::Uninitialize() // Libération du module s_moduleReferenceCounter = 0; + // Libération de l'atlas s'il vient de nous + if (NzFont::GetDefaultAtlas()->GetStorage() & nzDataStorage_Hardware) + NzFont::SetDefaultAtlas(nullptr); + // Loaders NzLoaders_Mesh_Unregister(); NzLoaders_OBJ_Unregister(); diff --git a/src/Nazara/Graphics/GuillotineTextureAtlas.cpp b/src/Nazara/Graphics/GuillotineTextureAtlas.cpp index 0963eddf3..baa477498 100644 --- a/src/Nazara/Graphics/GuillotineTextureAtlas.cpp +++ b/src/Nazara/Graphics/GuillotineTextureAtlas.cpp @@ -7,6 +7,11 @@ #include #include +nzUInt32 NzGuillotineTextureAtlas::GetStorage() const +{ + return nzDataStorage_Hardware; +} + NzAbstractImage* NzGuillotineTextureAtlas::ResizeImage(NzAbstractImage* oldImage, const NzVector2ui& size) const { std::unique_ptr newTexture(new NzTexture); diff --git a/src/Nazara/Utility/GuillotineImageAtlas.cpp b/src/Nazara/Utility/GuillotineImageAtlas.cpp index ebce4b01a..7f12b2e38 100644 --- a/src/Nazara/Utility/GuillotineImageAtlas.cpp +++ b/src/Nazara/Utility/GuillotineImageAtlas.cpp @@ -73,6 +73,11 @@ unsigned int NzGuillotineImageAtlas::GetLayerCount() const return m_layers.size(); } +nzUInt32 NzGuillotineImageAtlas::GetStorage() const +{ + return nzDataStorage_Software; +} + bool NzGuillotineImageAtlas::Insert(const NzImage& image, NzRectui* rect, bool* flipped, unsigned int* layerIndex) { if (m_layers.empty())