From 685be07a8f8707f83d6c7bf238c993ff0ec46d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Sun, 2 Sep 2012 19:08:17 +0200 Subject: [PATCH] Removed parameter-less clear() from Framebuffer. Automatic behavior could cause harm, as the stencil/depth test could be temporarily disabled for some parts of the scene (but enabled for the rest), causing clear() to leave stencil/depth buffer untouched. --- src/Framebuffer.cpp | 15 --------------- src/Framebuffer.h | 19 ++++--------------- 2 files changed, 4 insertions(+), 30 deletions(-) diff --git a/src/Framebuffer.cpp b/src/Framebuffer.cpp index 062bd51f2..e6117caec 100644 --- a/src/Framebuffer.cpp +++ b/src/Framebuffer.cpp @@ -17,21 +17,6 @@ namespace Magnum { -Framebuffer::ClearMask Framebuffer::clearMask = Framebuffer::Clear::Color; - -void Framebuffer::setFeature(Feature feature, bool enabled) { - /* Enable or disable the feature */ - enabled ? glEnable(static_cast(feature)) : glDisable(static_cast(feature)); - - /* Update clear mask, if needed */ - ClearMask clearMaskChange; - if(feature == Feature::DepthTest) clearMaskChange = Clear::Depth; - else if(feature == Feature::StencilTest) clearMaskChange = Clear::Stencil; - else return; - - enabled ? clearMask |= clearMaskChange : clearMask &= ~clearMaskChange; -} - #ifndef MAGNUM_TARGET_GLES void Framebuffer::mapDefaultForDraw(std::initializer_list attachments) { GLenum* _attachments = new GLenum[attachments.size()]; diff --git a/src/Framebuffer.h b/src/Framebuffer.h index f66b93661..002cb6872 100644 --- a/src/Framebuffer.h +++ b/src/Framebuffer.h @@ -86,7 +86,9 @@ class MAGNUM_EXPORT Framebuffer { }; /** @brief Set feature */ - static void setFeature(Feature feature, bool enabled); + inline static void setFeature(Feature feature, bool enabled) { + enabled ? glEnable(static_cast(feature)) : glDisable(static_cast(feature)); + } /** * @brief Set viewport size @@ -115,21 +117,10 @@ class MAGNUM_EXPORT Framebuffer { typedef Corrade::Containers::EnumSet ClearMask; /**< @brief Mask for clearing */ - /** - * @brief Clear framebuffer - * - * Clears color buffer, depth and stencil buffer in currently active - * framebuffer. If depth or stencil test is not enabled, it doesn't - * clear these buffers. - * - * @see setFeature(), clear(ClearMask) - */ - inline static void clear() { glClear(static_cast(clearMask)); } - /** * @brief Clear specified buffers in framebuffer * - * @see clear() + * @see clear(), setClearColor(), setClearDepth(), setClearStencil() * @todo Clearing only given draw buffer */ inline static void clear(ClearMask mask) { glClear(static_cast(mask)); } @@ -1108,8 +1099,6 @@ class MAGNUM_EXPORT Framebuffer { /*@}*/ private: - static ClearMask clearMask; - GLuint framebuffer; };