]> git.tdb.fi Git - libs/gl.git/blobdiff - source/framebuffer.cpp
Fix Camera::unproject
[libs/gl.git] / source / framebuffer.cpp
index 8c618ce51b7112ba96f4332cb1e08de683744397..1c2ae519bade1ef1059df7ff1a43dbdd33a23440 100644 (file)
@@ -1,6 +1,7 @@
 #include <msp/gl/extensions/arb_draw_buffers.h>
 #include <msp/gl/extensions/ext_framebuffer_blit.h>
 #include <msp/gl/extensions/ext_framebuffer_object.h>
+#include <msp/gl/extensions/msp_draw_buffer.h>
 #include "error.h"
 #include "framebuffer.h"
 #include "misc.h"
@@ -109,22 +110,17 @@ void Framebuffer::update_attachment(unsigned mask) const
                                color_bufs.push_back(attch.attachment);
                }
 
-               if(color_bufs.empty())
-               {
-                       glDrawBuffer(GL_NONE);
-                       glReadBuffer(GL_NONE);
-               }
-               else if(color_bufs.size()==1)
-               {
-                       glDrawBuffer(color_bufs.front());
-                       glReadBuffer(color_bufs.front());
-               }
-               else
-               {
+               if(color_bufs.size()>1)
                        static Require _req(ARB_draw_buffers);
+
+               GLenum first_buffer = (color_bufs.empty() ? GL_NONE : color_bufs.front());
+               if(ARB_draw_buffers)
                        glDrawBuffers(color_bufs.size(), &color_bufs[0]);
-                       glReadBuffer(color_bufs.front());
-               }
+               else if(MSP_draw_buffer)
+                       glDrawBuffer(first_buffer);
+
+               if(MSP_draw_buffer)
+                       glReadBuffer(first_buffer);
        }
        else
                dirty |= mask;