]> git.tdb.fi Git - libs/gl.git/blobdiff - source/ext_framebuffer_multisample.cpp
Complete rewrite of extension handling
[libs/gl.git] / source / ext_framebuffer_multisample.cpp
index a0f3930c1948c3e65e557425d74c1bd83e08ecda..7be2f6d35ebe8e4f184f74880249b548976ab7d2 100644 (file)
@@ -1,15 +1,26 @@
-#include "extension.h"
 #include "ext_framebuffer_multisample.h"
 
 namespace Msp {
 namespace GL {
 
-PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC glRenderbufferStorageMultisampleEXT = 0;
+PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample = 0;
 
-void init_ext_framebuffer_multisample()
+Extension::SupportLevel init_ext_framebuffer_multisample()
 {
-       glRenderbufferStorageMultisampleEXT = reinterpret_cast<PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC>(get_proc_address("glRenderbufferStorageMultisampleEXT"));
+       if(is_version_at_least(3, 0) || is_supported("GL_ARB_framebuffer_object"))
+       {
+               glRenderbufferStorageMultisample = reinterpret_cast<PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC>(get_proc_address("glRenderbufferStorageMultisample"));
+               return Extension::CORE;
+       }
+       if(is_supported("GL_EXT_framebuffer_multisample"))
+       {
+               glRenderbufferStorageMultisample = reinterpret_cast<PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC>(get_proc_address("glRenderbufferStorageMultisampleEXT"));
+               return Extension::EXTENSION;
+       }
+       return Extension::UNSUPPORTED;
 }
 
+Extension EXT_framebuffer_multisample("GL_EXT_framebuffer_multisample", init_ext_framebuffer_multisample);
+
 } // namespace GL
 } // namespace Msp