]> git.tdb.fi Git - libs/gl.git/blobdiff - source/ext_framebuffer_blit.cpp
Function pointer typedefs for core functions are not available everywhere
[libs/gl.git] / source / ext_framebuffer_blit.cpp
index 7519e13cf24e3663870b22c24c7711fab9f89094..6fec8a6861916bcbe4651e390d8491bf8493fa2f 100644 (file)
@@ -1,15 +1,26 @@
-#include "extension.h"
 #include "ext_framebuffer_blit.h"
 
 namespace Msp {
 namespace GL {
 
-PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT = 0;
+PFNGLBLITFRAMEBUFFEREXTPROC 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<PFNGLBLITFRAMEBUFFEREXTPROC>(get_proc_address("glBlitFramebuffer"));
+               return Extension::CORE;
+       }
+       if(is_supported("GL_EXT_framebuffer_blit"))
+       {
+               glBlitFramebuffer = reinterpret_cast<PFNGLBLITFRAMEBUFFEREXTPROC>(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