From b0336c240d006633d505b1e8e08bfbf05c22d1a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Fri, 22 Mar 2013 20:00:50 +0100 Subject: [PATCH] Platform: multisampling support in GlutApplication. --- src/Platform/GlutApplication.cpp | 8 +++++++- src/Platform/GlutApplication.h | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/Platform/GlutApplication.cpp b/src/Platform/GlutApplication.cpp index 2aa125759..3571c8a67 100644 --- a/src/Platform/GlutApplication.cpp +++ b/src/Platform/GlutApplication.cpp @@ -53,7 +53,13 @@ void GlutApplication::createContext(Configuration* configuration) { CORRADE_ASSERT(!c, "GlutApplication::createContext(): context already created", ); glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION); - glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL); + + unsigned int flags = GLUT_DOUBLE|GLUT_RGBA|GLUT_DEPTH|GLUT_STENCIL; + + /* Multisampling */ + if(configuration->sampleCount()) flags |= GLUT_MULTISAMPLE; + + glutInitDisplayMode(flags); glutInitWindowSize(configuration->size().x(), configuration->size().y()); glutCreateWindow(configuration->title().c_str()); glutReshapeFunc(staticViewportEvent); diff --git a/src/Platform/GlutApplication.h b/src/Platform/GlutApplication.h index 861376044..6dd8281a3 100644 --- a/src/Platform/GlutApplication.h +++ b/src/Platform/GlutApplication.h @@ -296,9 +296,26 @@ class GlutApplication::Configuration { return this; } + /** @brief Sample count */ + inline Int sampleCount() const { return _sampleCount; } + + /** + * @brief Set sample count + * @return Pointer to self (for method chaining) + * + * Default is `0`, thus no multisampling. The actual sample count is + * ignored, GLUT either enables it or disables. See also + * @ref Renderer::Feature "Renderer::Feature::Multisampling". + */ + inline Configuration* setSampleCount(Int count) { + _sampleCount = count; + return this; + } + private: std::string _title; Vector2i _size; + Int _sampleCount; }; /**