From 8066efb16ed5d90fd11e2cfac1bfebd6e6732aab Mon Sep 17 00:00:00 2001 From: David Rose Date: Sat, 21 Feb 2004 01:48:16 +0000 Subject: [PATCH] don't protect glReadBuffer and glDrawBuffer; they might get reset internally by slightly buggy drivers --- .../src/glstuff/glGraphicsStateGuardian_src.I | 59 ------------------- .../glstuff/glGraphicsStateGuardian_src.cxx | 38 ++++++------ .../src/glstuff/glGraphicsStateGuardian_src.h | 4 -- 3 files changed, 18 insertions(+), 83 deletions(-) diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.I b/panda/src/glstuff/glGraphicsStateGuardian_src.I index 3da2da3705..4fe949d653 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.I +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.I @@ -129,65 +129,6 @@ call_glClearAccum(GLclampf red, GLclampf green, GLclampf blue, } } -//////////////////////////////////////////////////////////////////// -// Function: CLP(GraphicsStateGuardian)::call_glDrawBuffer -// Access: Public -// Description: -//////////////////////////////////////////////////////////////////// -INLINE void CLP(GraphicsStateGuardian):: -call_glDrawBuffer(GLenum mode) { - if (mode != _draw_buffer_mode) { -#ifdef GSG_VERBOSE - GLCAT.spam() << "glDrawBuffer("; - switch (mode) { - case GL_FRONT: - GLCAT.spam(false) << "GL_FRONT)"; - break; - case GL_BACK: - GLCAT.spam(false) << "GL_BACK)"; - break; - case GL_RIGHT: - GLCAT.spam(false) << "GL_RIGHT)"; - break; - case GL_LEFT: - GLCAT.spam(false) << "GL_LEFT)"; - break; - case GL_FRONT_RIGHT: - GLCAT.spam(false) << "GL_FRONT_RIGHT)"; - break; - case GL_FRONT_LEFT: - GLCAT.spam(false) << "GL_FRONT_LEFT)"; - break; - case GL_BACK_RIGHT: - GLCAT.spam(false) << "GL_BACK_RIGHT)"; - break; - case GL_BACK_LEFT: - GLCAT.spam(false) << "GL_BACK_LEFT)"; - break; - case GL_FRONT_AND_BACK: - GLCAT.spam(false) << "GL_FRONT_AND_BACK)"; - break; - } - GLCAT.spam(false) << endl; -#endif - GLP(DrawBuffer)(mode); - _draw_buffer_mode = mode; - } -} - -//////////////////////////////////////////////////////////////////// -// Function: CLP(GraphicsStateGuardian)::call_glReadBuffer -// Access: Public -// Description: -//////////////////////////////////////////////////////////////////// -INLINE void CLP(GraphicsStateGuardian):: -call_glReadBuffer(GLenum mode) { - if (mode != _read_buffer_mode) { - GLP(ReadBuffer)(mode); - _read_buffer_mode = mode; - } -} - //////////////////////////////////////////////////////////////////// // Function: CLP(GraphicsStateGuardian)::call_glShadeModel diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index bbfdd7f3a2..923cf04beb 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -309,8 +309,6 @@ reset() { _clear_accum_alpha = -1.0f; // Set up the specific state values to GL's known initial values. - _draw_buffer_mode = (has_back) ? GL_BACK : GL_FRONT; - _read_buffer_mode = (has_back) ? GL_BACK : GL_FRONT; _shade_model_mode = GL_SMOOTH; GLP(FrontFace)(GL_CCW); @@ -2755,39 +2753,39 @@ void CLP(GraphicsStateGuardian):: set_draw_buffer(const RenderBuffer &rb) { switch (rb._buffer_type & RenderBuffer::T_color) { case RenderBuffer::T_front: - call_glDrawBuffer(GL_FRONT); + GLP(DrawBuffer)(GL_FRONT); break; case RenderBuffer::T_back: - call_glDrawBuffer(GL_BACK); + GLP(DrawBuffer)(GL_BACK); break; case RenderBuffer::T_right: - call_glDrawBuffer(GL_RIGHT); + GLP(DrawBuffer)(GL_RIGHT); break; case RenderBuffer::T_left: - call_glDrawBuffer(GL_LEFT); + GLP(DrawBuffer)(GL_LEFT); break; case RenderBuffer::T_front_right: - call_glDrawBuffer(GL_FRONT_RIGHT); + GLP(DrawBuffer)(GL_FRONT_RIGHT); break; case RenderBuffer::T_front_left: - call_glDrawBuffer(GL_FRONT_LEFT); + GLP(DrawBuffer)(GL_FRONT_LEFT); break; case RenderBuffer::T_back_right: - call_glDrawBuffer(GL_BACK_RIGHT); + GLP(DrawBuffer)(GL_BACK_RIGHT); break; case RenderBuffer::T_back_left: - call_glDrawBuffer(GL_BACK_LEFT); + GLP(DrawBuffer)(GL_BACK_LEFT); break; default: - call_glDrawBuffer(GL_FRONT_AND_BACK); + GLP(DrawBuffer)(GL_FRONT_AND_BACK); } report_my_gl_errors(); } @@ -2804,39 +2802,39 @@ void CLP(GraphicsStateGuardian):: set_read_buffer(const RenderBuffer &rb) { switch (rb._buffer_type & RenderBuffer::T_color) { case RenderBuffer::T_front: - call_glReadBuffer(GL_FRONT); + GLP(ReadBuffer)(GL_FRONT); break; case RenderBuffer::T_back: - call_glReadBuffer(GL_BACK); + GLP(ReadBuffer)(GL_BACK); break; case RenderBuffer::T_right: - call_glReadBuffer(GL_RIGHT); + GLP(ReadBuffer)(GL_RIGHT); break; case RenderBuffer::T_left: - call_glReadBuffer(GL_LEFT); + GLP(ReadBuffer)(GL_LEFT); break; case RenderBuffer::T_front_right: - call_glReadBuffer(GL_FRONT_RIGHT); + GLP(ReadBuffer)(GL_FRONT_RIGHT); break; case RenderBuffer::T_front_left: - call_glReadBuffer(GL_FRONT_LEFT); + GLP(ReadBuffer)(GL_FRONT_LEFT); break; case RenderBuffer::T_back_right: - call_glReadBuffer(GL_BACK_RIGHT); + GLP(ReadBuffer)(GL_BACK_RIGHT); break; case RenderBuffer::T_back_left: - call_glReadBuffer(GL_BACK_LEFT); + GLP(ReadBuffer)(GL_BACK_LEFT); break; default: - call_glReadBuffer(GL_FRONT_AND_BACK); + GLP(ReadBuffer)(GL_FRONT_AND_BACK); } report_my_gl_errors(); } diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.h b/panda/src/glstuff/glGraphicsStateGuardian_src.h index f364f9fabe..2bc2730d9d 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.h +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.h @@ -166,8 +166,6 @@ protected: INLINE void call_glClearStencil(GLint s); INLINE void call_glClearAccum(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); - INLINE void call_glDrawBuffer(GLenum mode); - INLINE void call_glReadBuffer(GLenum mode); INLINE void call_glShadeModel(GLenum mode); INLINE void call_glBlendFunc(GLenum sfunc, GLenum dfunc); INLINE void call_glCullFace(GLenum mode); @@ -246,8 +244,6 @@ protected: GLint _clear_stencil; GLclampf _clear_accum_red, _clear_accum_green, _clear_accum_blue, _clear_accum_alpha; - GLenum _draw_buffer_mode; - GLenum _read_buffer_mode; GLenum _shade_model_mode; GLint _scissor_x; GLint _scissor_y;