Better handling of module initialization

Former-commit-id: 08d4b87a9b7cc10e672c23374306081fc9259de0
This commit is contained in:
Lynix 2013-07-31 14:17:48 +02:00
parent 48e5af6373
commit fc56553021
2 changed files with 15 additions and 10 deletions

View File

@ -492,7 +492,9 @@ bool NzRenderer::Initialize()
// Initialisation des dépendances // Initialisation des dépendances
if (!NzUtility::Initialize()) if (!NzUtility::Initialize())
{ {
NazaraError("Failed to initialize utility module"); NazaraError("Failed to initialize Utility module");
Uninitialize();
return false; return false;
} }
@ -500,11 +502,11 @@ bool NzRenderer::Initialize()
if (!NzOpenGL::Initialize()) if (!NzOpenGL::Initialize())
{ {
NazaraError("Failed to initialize OpenGL"); NazaraError("Failed to initialize OpenGL");
Uninitialize();
return false; return false;
} }
NzContext::EnsureContext();
NzBuffer::SetBufferFunction(nzBufferStorage_Hardware, HardwareBufferFunction); NzBuffer::SetBufferFunction(nzBufferStorage_Hardware, HardwareBufferFunction);
for (unsigned int i = 0; i <= nzMatrixType_Max; ++i) for (unsigned int i = 0; i <= nzMatrixType_Max; ++i)
@ -529,6 +531,8 @@ bool NzRenderer::Initialize()
s_capabilities[nzRendererCap_TextureMulti] = true; // Natif depuis OpenGL 1.3 s_capabilities[nzRendererCap_TextureMulti] = true; // Natif depuis OpenGL 1.3
s_capabilities[nzRendererCap_TextureNPOT] = true; // Natif depuis OpenGL 2.0 s_capabilities[nzRendererCap_TextureNPOT] = true; // Natif depuis OpenGL 2.0
NzContext::EnsureContext();
if (s_capabilities[nzRendererCap_AnisotropicFilter]) if (s_capabilities[nzRendererCap_AnisotropicFilter])
{ {
GLfloat maxAnisotropy; GLfloat maxAnisotropy;
@ -635,8 +639,6 @@ bool NzRenderer::Initialize()
// Loaders // Loaders
NzLoaders_Texture_Register(); NzLoaders_Texture_Register();
NazaraNotice("Initialized: Renderer module");
return true; return true;
} }
@ -1169,8 +1171,6 @@ void NzRenderer::Uninitialize()
return; return;
} }
NzContext::EnsureContext();
// Libération du module // Libération du module
s_moduleReferenceCounter = 0; s_moduleReferenceCounter = 0;

View File

@ -6,6 +6,7 @@
#include <Nazara/Renderer/TextureSampler.hpp> #include <Nazara/Renderer/TextureSampler.hpp>
#include <Nazara/Core/Error.hpp> #include <Nazara/Core/Error.hpp>
#include <Nazara/Renderer/Config.hpp> #include <Nazara/Renderer/Config.hpp>
#include <Nazara/Renderer/Context.hpp>
#include <Nazara/Renderer/Renderer.hpp> #include <Nazara/Renderer/Renderer.hpp>
#include <Nazara/Renderer/Texture.hpp> #include <Nazara/Renderer/Texture.hpp>
#include <unordered_map> #include <unordered_map>
@ -374,10 +375,14 @@ bool NzTextureSampler::Initialize()
void NzTextureSampler::Uninitialize() void NzTextureSampler::Uninitialize()
{ {
for (const std::pair<nzUInt32, GLuint>& pair : s_samplers) if (!s_samplers.empty())
glDeleteSamplers(1, &pair.second); {
NzContext::EnsureContext();
for (const std::pair<nzUInt32, GLuint>& pair : s_samplers)
glDeleteSamplers(1, &pair.second);
s_samplers.clear(); s_samplers.clear();
}
} }
nzUInt8 NzTextureSampler::s_defaultAnisotropyLevel = 1; nzUInt8 NzTextureSampler::s_defaultAnisotropyLevel = 1;