Browse Source

Added Renderer::enable()/disable().

Should be preferred to Renderer::setFeature() to avoid unnecessary
branching. Also a bit shorter to write.
pull/68/head
Vladimír Vondruš 12 years ago
parent
commit
73404fc6e5
  1. 4
      src/Magnum/DebugMessage.h
  2. 10
      src/Magnum/Renderer.cpp
  3. 25
      src/Magnum/Renderer.h
  4. 4
      src/Magnum/SceneGraph/Drawable.h
  5. 4
      src/Magnum/Test/AbstractOpenGLTester.h
  6. 6
      src/Magnum/Test/DebugGLTest.cpp
  7. 4
      src/Magnum/Test/TimeQueryGLTest.cpp

4
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,

10
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) {

25
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);

4
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);
// ...
}

4
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<Extensions::GL::KHR::debug>()) {
Renderer::setFeature(Renderer::Feature::DebugOutput, true);
Renderer::setFeature(Renderer::Feature::DebugOutputSynchronous, true);
Renderer::enable(Renderer::Feature::DebugOutput);
Renderer::enable(Renderer::Feature::DebugOutputSynchronous);
DebugMessage::setDefaultCallback();
}
}

6
src/Magnum/Test/DebugGLTest.cpp

@ -77,16 +77,16 @@ void DebugGLTest::insertMessage() {
if(!Context::current()->isExtensionSupported<Extensions::GL::KHR::debug>())
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(),

4
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<UnsignedInt>();
@ -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();

Loading…
Cancel
Save