瀏覽代碼

don't protect glReadBuffer and glDrawBuffer; they might get reset internally by slightly buggy drivers

David Rose 22 年之前
父節點
當前提交
8066efb16e

+ 0 - 59
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

+ 18 - 20
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();
 }

+ 0 - 4
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;