diff --git a/src/Nazara/Renderer/Loaders/Texture.hpp b/src/Nazara/Renderer/Loaders/Texture.hpp new file mode 100644 index 000000000..c70b28305 --- /dev/null +++ b/src/Nazara/Renderer/Loaders/Texture.hpp @@ -0,0 +1,15 @@ +// Copyright (C) 2012 Jérôme Leclercq +// This file is part of the "Nazara Engine - Renderer module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#pragma once + +#ifndef NAZARA_LOADERS_TEXTURE_HPP +#define NAZARA_LOADERS_TEXTURE_HPP + +#include + +void NzLoaders_Texture_Register(); +void NzLoaders_Texture_Unregister(); + +#endif // NAZARA_LOADERS_TEXTURE_HPP diff --git a/src/Nazara/Renderer/Loaders/Texture/Loader.cpp b/src/Nazara/Renderer/Loaders/Texture/Loader.cpp new file mode 100644 index 000000000..902609f87 --- /dev/null +++ b/src/Nazara/Renderer/Loaders/Texture/Loader.cpp @@ -0,0 +1,48 @@ +// Copyright (C) 2012 Jérôme Leclercq +// This file is part of the "Nazara Engine - Renderer module" +// For conditions of distribution and use, see copyright notice in Config.hpp + +#include +#include +#include +#include + +namespace +{ + bool Check(NzInputStream& stream, const NzMaterialParams& parameters) + { + NazaraUnused(stream); + NazaraUnused(parameters); + + return true; ///FIXME: Pas bon + } + + bool Load(NzMaterial* material, NzInputStream& stream, const NzMaterialParams& parameters) + { + NazaraUnused(parameters); + + NzTexture* texture = new NzTexture; + if (!texture->LoadFromStream(stream)) + { + NazaraError("Failed to load diffuse map"); + return false; + } + + material->Reset(); + material->SetDiffuseMap(texture); + texture->SetPersistent(false); + + return true; + } +} + +void NzLoaders_Texture_Register() +{ + ///FIXME: Pas bon + NzMaterialLoader::RegisterLoader("bmp,gif,hdr,jpg,jpeg,pic,png,psd,tga", Check, Load); +} + +void NzLoaders_Texture_Unregister() +{ + NzMaterialLoader::UnregisterLoader("bmp,gif,hdr,jpg,jpeg,pic,png,psd,tga", Check, Load); +} diff --git a/src/Nazara/Renderer/Renderer.cpp b/src/Nazara/Renderer/Renderer.cpp index 61278b532..6ba2d8471 100644 --- a/src/Nazara/Renderer/Renderer.cpp +++ b/src/Nazara/Renderer/Renderer.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -449,6 +450,9 @@ bool NzRenderer::Initialize() NazaraWarning("Failed to initialize debug drawer"); #endif + // Loaders + NzLoaders_Texture_Register(); + NazaraNotice("Initialized: Renderer module"); return true; @@ -903,6 +907,9 @@ void NzRenderer::Uninitialize() if (--s_moduleReferenceCouter != 0) return; // Encore utilisé + // Loaders + NzLoaders_Texture_Unregister(); + #ifdef NAZARA_DEBUG NzDebugDrawer::Uninitialize(); #endif @@ -1065,11 +1072,11 @@ bool NzRenderer::EnsureStateUpdate() glEnableVertexAttribArray(NzOpenGL::AttributeIndex[i]); glVertexAttribPointer(NzOpenGL::AttributeIndex[i], - NzVertexDeclaration::GetElementCount(element->type), - NzOpenGL::ElementType[element->type], - (element->type == nzElementType_Color) ? GL_TRUE : GL_FALSE, - stride, - &buffer[element->offset]); + NzVertexDeclaration::GetElementCount(element->type), + NzOpenGL::ElementType[element->type], + (element->type == nzElementType_Color) ? GL_TRUE : GL_FALSE, + stride, + &buffer[element->offset]); } else glDisableVertexAttribArray(NzOpenGL::AttributeIndex[i]);