]> git.tdb.fi Git - libs/gl.git/blobdiff - source/ext_texture3d.cpp
Complete rewrite of extension handling
[libs/gl.git] / source / ext_texture3d.cpp
diff --git a/source/ext_texture3d.cpp b/source/ext_texture3d.cpp
new file mode 100644 (file)
index 0000000..e75044a
--- /dev/null
@@ -0,0 +1,29 @@
+#include "ext_texture3d.h"
+
+namespace Msp {
+namespace GL {
+
+PFNGLTEXIMAGE3DPROC glTexImage3D = 0;
+PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D = 0;
+
+Extension::SupportLevel init_ext_texture3d()
+{
+       if(is_version_at_least(1, 2))
+       {
+               glTexImage3D = reinterpret_cast<PFNGLTEXIMAGE3DPROC>(get_proc_address("glTexImage3D"));
+               glTexSubImage3D = reinterpret_cast<PFNGLTEXSUBIMAGE3DPROC>(get_proc_address("glTexSubImage3D"));
+               return Extension::CORE;
+       }
+       if(is_supported("GL_EXT_texture3D"))
+       {
+               glTexImage3D = reinterpret_cast<PFNGLTEXIMAGE3DPROC>(get_proc_address("glTexImage3DEXT"));
+               glTexSubImage3D = reinterpret_cast<PFNGLTEXSUBIMAGE3DPROC>(get_proc_address("glTexSubImage3DEXT"));
+               return Extension::EXTENSION;
+       }
+       return Extension::UNSUPPORTED;
+}
+
+Extension EXT_texture3D("GL_EXT_texture3D", init_ext_texture3d);
+
+} // namespace GL
+} // namespace Msp