From 43b5e493f65d4020892ec02cc294de2ed6941b3e Mon Sep 17 00:00:00 2001 From: Lynix Date: Wed, 13 Feb 2013 01:35:01 +0100 Subject: [PATCH] Added face culling boolean to materials Former-commit-id: ed651beb3545b85d5496bb5739c4caa9c81df8a3 --- include/Nazara/Renderer/Material.hpp | 3 +++ src/Nazara/Renderer/Material.cpp | 20 +++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/include/Nazara/Renderer/Material.hpp b/include/Nazara/Renderer/Material.hpp index 1c965fee3..10a544e38 100644 --- a/include/Nazara/Renderer/Material.hpp +++ b/include/Nazara/Renderer/Material.hpp @@ -40,6 +40,7 @@ class NAZARA_API NzMaterial : public NzResource void Apply() const; void EnableAlphaBlending(bool alphaBlending); + void EnableFaceCulling(bool faceCulling); void EnableLighting(bool lighting); void EnableZTest(bool zTest); void EnableZWrite(bool zWrite); @@ -64,6 +65,7 @@ class NAZARA_API NzMaterial : public NzResource nzRendererComparison GetZTestCompare() const; bool IsAlphaBlendingEnabled() const; + bool IsFaceCullingEnabled() const; bool IsLightingEnabled() const; bool IsZTestEnabled() const; bool IsZWriteEnabled() const; @@ -116,6 +118,7 @@ class NAZARA_API NzMaterial : public NzResource NzTexture* m_specularMap; bool m_alphaBlendingEnabled; bool m_autoShader; + bool m_faceCullingEnabled; bool m_lightingEnabled; bool m_zTestEnabled; bool m_zWriteEnabled; diff --git a/src/Nazara/Renderer/Material.cpp b/src/Nazara/Renderer/Material.cpp index d8db28076..0ddfaaa08 100644 --- a/src/Nazara/Renderer/Material.cpp +++ b/src/Nazara/Renderer/Material.cpp @@ -160,7 +160,14 @@ void NzMaterial::Apply() const else NzRenderer::Enable(nzRendererParameter_Blend, false); - NzRenderer::SetFaceCulling(m_faceCulling); + if (m_faceCullingEnabled) + { + NzRenderer::Enable(nzRendererParameter_FaceCulling, true); + NzRenderer::SetFaceCulling(m_faceCulling); + } + else + NzRenderer::Enable(nzRendererParameter_FaceCulling, false); + NzRenderer::SetFaceFilling(m_faceFilling); if (m_zTestEnabled) @@ -178,6 +185,11 @@ void NzMaterial::EnableAlphaBlending(bool alphaBlending) m_alphaBlendingEnabled = alphaBlending; } +void NzMaterial::EnableFaceCulling(bool faceCulling) +{ + m_faceCullingEnabled = faceCulling; +} + void NzMaterial::EnableLighting(bool lighting) { m_lightingEnabled = lighting; @@ -294,6 +306,11 @@ bool NzMaterial::IsAlphaBlendingEnabled() const return m_alphaBlendingEnabled; } +bool NzMaterial::IsFaceCullingEnabled() const +{ + return m_faceCullingEnabled; +} + bool NzMaterial::IsLightingEnabled() const { return m_lightingEnabled; @@ -363,6 +380,7 @@ void NzMaterial::Reset() m_diffuseSampler = NzTextureSampler(); m_dstBlend = nzBlendFunc_Zero; m_faceCulling = nzFaceCulling_Back; + m_faceCullingEnabled = true; m_faceFilling = nzFaceFilling_Fill; m_lightingEnabled = true; m_shininess = 50.f;