diff --git a/modules/gfx/src/scene.cc b/modules/gfx/src/scene.cc index aaff9c1e9765102becce8297d798dfc47fe57123..5840c68a11ef21c90b3b4ed5376a984e0436eafe 100644 --- a/modules/gfx/src/scene.cc +++ b/modules/gfx/src/scene.cc @@ -141,6 +141,7 @@ Scene::Scene(): bg_grad_(), bg_bm_(), bg_tex_(), + ms_flag_(false), export_aspect_(1.0), show_export_aspect_(false) { @@ -477,7 +478,9 @@ void Scene::InitGL(bool full) glDisable(GL_POINT_SMOOTH); glDisable(GL_POLYGON_SMOOTH); glEnable(GL_MULTISAMPLE); + ms_flag_=true; } else { + ms_flag_=false; glEnable(GL_LINE_SMOOTH); glDisable(GL_POINT_SMOOTH); glDisable(GL_POLYGON_SMOOTH); @@ -2067,21 +2070,26 @@ namespace { glTexCoord2f(1.0,1.0); glVertex2i(vp_width_,vp_height_); glTexCoord2f(1.0,0.0); glVertex2i(vp_width_,0); glEnd(); - } - - ~ViewportRenderer() { - glBindTexture(GL_TEXTURE_2D, 0); - glDisable(GL_TEXTURE_2D); - glMatrixMode(GL_PROJECTION); - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); - glPopMatrix(); - glPopClientAttrib(); - glPopAttrib(); + } + + ~ViewportRenderer() { + glBindTexture(GL_TEXTURE_2D, 0); + glDisable(GL_TEXTURE_2D); + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); + glPopMatrix(); + glPopClientAttrib(); + glPopAttrib(); +#if defined(OST_GL_VERSION_2_0) + if(Scene::Instance().HasMultisample()) { + glEnable(GL_MULTISAMPLE); + } +#endif #if OST_SHADER_SUPPORT_ENABLED - Shader::Instance().PopProgram(); + Shader::Instance().PopProgram(); #endif - } + } }; } @@ -2480,6 +2488,11 @@ void Scene::render_stereo() glPopMatrix(); glPopClientAttrib(); glPopAttrib(); +#if defined(OST_GL_VERSION_2_0) + if(HasMultisample()) { + glEnable(GL_MULTISAMPLE); + } +#endif #if OST_SHADER_SUPPORT_ENABLED Shader::Instance().PopProgram(); #endif diff --git a/modules/gfx/src/scene.hh b/modules/gfx/src/scene.hh index 972d2587c70c687a5bf223d82005a3db88f15719..4b9483666a18a62929e87b0c3bf3213f4b702a66 100644 --- a/modules/gfx/src/scene.hh +++ b/modules/gfx/src/scene.hh @@ -513,6 +513,7 @@ class DLLEXPORT_OST_GFX Scene { void SetShowExportAspect(bool f); bool GetShowExportAspect() const {return show_export_aspect_;} + bool HasMultisample() const {return ms_flag_;} protected: friend class GfxObj; friend class GfxNode; @@ -603,6 +604,8 @@ private: Bitmap bg_bm_; unsigned int bg_tex_; + bool ms_flag_; // multisample flag + float export_aspect_; bool show_export_aspect_;