]> git.tdb.fi Git - libs/gl.git/blobdiff - source/ext_framebuffer_blit.cpp
Complete rewrite of extension handling
[libs/gl.git] / source / ext_framebuffer_blit.cpp
index 7519e13cf24e3663870b22c24c7711fab9f89094..a198cdd176a55601834a78e8c22c1d87fcedf948 100644 (file)
@@ -1,15 +1,26 @@
-#include "extension.h"
 #include "ext_framebuffer_blit.h"
 
 namespace Msp {
 namespace GL {
 
-PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT = 0;
+PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer = 0;
 
-void init_ext_framebuffer_blit()
+Extension::SupportLevel init_ext_framebuffer_blit()
 {
-       glBlitFramebufferEXT = reinterpret_cast<PFNGLBLITFRAMEBUFFEREXTPROC>(get_proc_address("glBlitFramebufferEXT"));
+       if(is_version_at_least(3, 0) || is_supported("GL_ARB_framebuffer_object"))
+       {
+               glBlitFramebuffer = reinterpret_cast<PFNGLBLITFRAMEBUFFERPROC>(get_proc_address("glBlitFramebuffer"));
+               return Extension::CORE;
+       }
+       if(is_supported("GL_EXT_framebuffer_blit"))
+       {
+               glBlitFramebuffer = reinterpret_cast<PFNGLBLITFRAMEBUFFERPROC>(get_proc_address("glBlitFramebufferEXT"));
+               return Extension::EXTENSION;
+       }
+       return Extension::UNSUPPORTED;
 }
 
+Extension EXT_framebuffer_blit("GL_EXT_framebuffer_blit", init_ext_framebuffer_blit);
+
 } // namespace GL
 } // namespace Msp