diff --git a/src/Magnum/DebugMessage.h b/src/Magnum/DebugMessage.h index 217ebbc68..a213a1fb9 100644 --- a/src/Magnum/DebugMessage.h +++ b/src/Magnum/DebugMessage.h @@ -56,8 +56,8 @@ using @ref setCallback() or use the default one provided in @ref setDefaultCallback(): @code -Renderer::setFeature(Renderer::Feature::DebugOutput, true); -Renderer::setFeature(Renderer::Feature::DebugOutputSynchronous, true); +Renderer::enable(Renderer::Feature::DebugOutput); +Renderer::enable(Renderer::Feature::DebugOutputSynchronous); DebugMessage::setDefaultCallback(); DebugMessage::insert(DebugMessage::Source::Application, DebugMessage::Type::Marker, diff --git a/src/Magnum/Renderer.cpp b/src/Magnum/Renderer.cpp index e35a83c7f..9d68aab86 100644 --- a/src/Magnum/Renderer.cpp +++ b/src/Magnum/Renderer.cpp @@ -35,8 +35,16 @@ namespace Magnum { +void Renderer::enable(const Feature feature) { + glEnable(GLenum(feature)); +} + +void Renderer::disable(const Feature feature) { + glDisable(GLenum(feature)); +} + void Renderer::setFeature(const Feature feature, const bool enabled) { - enabled ? glEnable(GLenum(feature)) : glDisable(GLenum(feature)); + enabled ? enable(feature) : disable(feature); } void Renderer::setHint(const Hint target, const HintMode mode) { diff --git a/src/Magnum/Renderer.h b/src/Magnum/Renderer.h index bb90767ed..6df8f9513 100644 --- a/src/Magnum/Renderer.h +++ b/src/Magnum/Renderer.h @@ -74,7 +74,7 @@ class MAGNUM_EXPORT Renderer { * @brief Features * * All features are disabled by default unless specified otherwise. - * @see @ref setFeature() + * @see @ref enable(), @ref disable(), @ref setFeature() */ enum class Feature: GLenum { /** @@ -219,9 +219,28 @@ class MAGNUM_EXPORT Renderer { }; /** - * @brief Set feature + * @brief Enable feature * - * @see @fn_gl{Enable}/@fn_gl{Disable} + * @see @ref disable(), @ref setFeature(), @fn_gl{Enable} + */ + static void enable(Feature feature); + + /** + * @brief Disable feature + * + * @see @ref enable(), @ref setFeature(), @fn_gl{Disable} + */ + static void disable(Feature feature); + + /** + * @brief Enable or disable feature + * + * Convenience equivalent to the following: + * @code + * enabled ? Renderer::enable(feature) : Renderer::disable(feature) + * @endcode + * Prefer to use @ref enable() and @ref disable() directly to avoid + * unnecessary branching. */ static void setFeature(Feature feature, bool enabled); diff --git a/src/Magnum/SceneGraph/Drawable.h b/src/Magnum/SceneGraph/Drawable.h index 8763ddf07..e37ac3792 100644 --- a/src/Magnum/SceneGraph/Drawable.h +++ b/src/Magnum/SceneGraph/Drawable.h @@ -109,9 +109,9 @@ void MyApplication::drawEvent() { .setAmbientColor(ambientColor); camera.draw(phongObjects); - Renderer::setFeature(Renderer::Feature::Blending, true); + Renderer::enable(Renderer::Feature::Blending); camera.draw(transparentObjects); - Renderer::setFeature(Renderer::Feature::Blending, false); + Renderer::disable(Renderer::Feature::Blending); // ... } diff --git a/src/Magnum/Test/AbstractOpenGLTester.h b/src/Magnum/Test/AbstractOpenGLTester.h index 47bf4d684..bf576f8c7 100644 --- a/src/Magnum/Test/AbstractOpenGLTester.h +++ b/src/Magnum/Test/AbstractOpenGLTester.h @@ -53,8 +53,8 @@ class AbstractOpenGLTester: public TestSuite::Tester, public Platform::Windowles AbstractOpenGLTester::AbstractOpenGLTester(): Platform::WindowlessApplication({zero, nullptr}) { if(Context::current()->isExtensionSupported()) { - Renderer::setFeature(Renderer::Feature::DebugOutput, true); - Renderer::setFeature(Renderer::Feature::DebugOutputSynchronous, true); + Renderer::enable(Renderer::Feature::DebugOutput); + Renderer::enable(Renderer::Feature::DebugOutputSynchronous); DebugMessage::setDefaultCallback(); } } diff --git a/src/Magnum/Test/DebugGLTest.cpp b/src/Magnum/Test/DebugGLTest.cpp index 38a5e95e9..459c6b57a 100644 --- a/src/Magnum/Test/DebugGLTest.cpp +++ b/src/Magnum/Test/DebugGLTest.cpp @@ -77,16 +77,16 @@ void DebugGLTest::insertMessage() { if(!Context::current()->isExtensionSupported()) CORRADE_SKIP(Extensions::GL::KHR::debug::string() + std::string(" is not supported")); - Renderer::setFeature(Renderer::Feature::DebugOutput, true); + Renderer::enable(Renderer::Feature::DebugOutput); - Renderer::setFeature(Renderer::Feature::DebugOutputSynchronous, true); + Renderer::enable(Renderer::Feature::DebugOutputSynchronous); std::ostringstream out; Debug::setOutput(&out); DebugMessage::setDefaultCallback(); DebugMessage::insert(DebugMessage::Source::Application, DebugMessage::Type::Marker, 1337, DebugMessage::Severity::Notification, "Hello from OpenGL command stream!"); - Renderer::setFeature(Renderer::Feature::DebugOutput, false); + Renderer::enable(Renderer::Feature::DebugOutput); MAGNUM_VERIFY_NO_ERROR(); CORRADE_COMPARE(out.str(), diff --git a/src/Magnum/Test/TimeQueryGLTest.cpp b/src/Magnum/Test/TimeQueryGLTest.cpp index 60552c30b..233a98b8a 100644 --- a/src/Magnum/Test/TimeQueryGLTest.cpp +++ b/src/Magnum/Test/TimeQueryGLTest.cpp @@ -60,7 +60,7 @@ void TimeQueryGLTest::queryTime() { TimeQuery q2; q2.begin(TimeQuery::Target::TimeElapsed); - Renderer::setFeature(Renderer::Feature::Blending, true); + Renderer::enable(Renderer::Feature::Blending); Renderer::finish(); q2.end(); const auto result2 = q2.result(); @@ -80,7 +80,7 @@ void TimeQueryGLTest::queryTimestamp() { q1.timestamp(); q.begin(TimeQuery::Target::TimeElapsed); - Renderer::setFeature(Renderer::Feature::Blending, true); + Renderer::enable(Renderer::Feature::Blending); Renderer::finish(); q.end();