X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Farb_multitexture.cpp;fp=source%2Farb_multitexture.cpp;h=391b0455fbeee5e185bddd33b39c2a0e4607b88f;hb=6afbace895a7bbcf216ab8e48280ea0303ab5892;hp=0000000000000000000000000000000000000000;hpb=485315ca65cb40f33253008a79b0933997bd74f5;p=libs%2Fgl.git diff --git a/source/arb_multitexture.cpp b/source/arb_multitexture.cpp new file mode 100644 index 00000000..391b0455 --- /dev/null +++ b/source/arb_multitexture.cpp @@ -0,0 +1,125 @@ +#include "arb_multitexture.h" + +namespace Msp { +namespace GL { + +PFNGLACTIVETEXTUREPROC glActiveTexture = 0; +PFNGLCLIENTACTIVETEXTUREPROC glClientActiveTexture = 0; +PFNGLMULTITEXCOORD1DPROC glMultiTexCoord1d = 0; +PFNGLMULTITEXCOORD1DVPROC glMultiTexCoord1dv = 0; +PFNGLMULTITEXCOORD1FPROC glMultiTexCoord1f = 0; +PFNGLMULTITEXCOORD1FVPROC glMultiTexCoord1fv = 0; +PFNGLMULTITEXCOORD1IPROC glMultiTexCoord1i = 0; +PFNGLMULTITEXCOORD1IVPROC glMultiTexCoord1iv = 0; +PFNGLMULTITEXCOORD1SPROC glMultiTexCoord1s = 0; +PFNGLMULTITEXCOORD1SVPROC glMultiTexCoord1sv = 0; +PFNGLMULTITEXCOORD2DPROC glMultiTexCoord2d = 0; +PFNGLMULTITEXCOORD2DVPROC glMultiTexCoord2dv = 0; +PFNGLMULTITEXCOORD2FPROC glMultiTexCoord2f = 0; +PFNGLMULTITEXCOORD2FVPROC glMultiTexCoord2fv = 0; +PFNGLMULTITEXCOORD2IPROC glMultiTexCoord2i = 0; +PFNGLMULTITEXCOORD2IVPROC glMultiTexCoord2iv = 0; +PFNGLMULTITEXCOORD2SPROC glMultiTexCoord2s = 0; +PFNGLMULTITEXCOORD2SVPROC glMultiTexCoord2sv = 0; +PFNGLMULTITEXCOORD3DPROC glMultiTexCoord3d = 0; +PFNGLMULTITEXCOORD3DVPROC glMultiTexCoord3dv = 0; +PFNGLMULTITEXCOORD3FPROC glMultiTexCoord3f = 0; +PFNGLMULTITEXCOORD3FVPROC glMultiTexCoord3fv = 0; +PFNGLMULTITEXCOORD3IPROC glMultiTexCoord3i = 0; +PFNGLMULTITEXCOORD3IVPROC glMultiTexCoord3iv = 0; +PFNGLMULTITEXCOORD3SPROC glMultiTexCoord3s = 0; +PFNGLMULTITEXCOORD3SVPROC glMultiTexCoord3sv = 0; +PFNGLMULTITEXCOORD4DPROC glMultiTexCoord4d = 0; +PFNGLMULTITEXCOORD4DVPROC glMultiTexCoord4dv = 0; +PFNGLMULTITEXCOORD4FPROC glMultiTexCoord4f = 0; +PFNGLMULTITEXCOORD4FVPROC glMultiTexCoord4fv = 0; +PFNGLMULTITEXCOORD4IPROC glMultiTexCoord4i = 0; +PFNGLMULTITEXCOORD4IVPROC glMultiTexCoord4iv = 0; +PFNGLMULTITEXCOORD4SPROC glMultiTexCoord4s = 0; +PFNGLMULTITEXCOORD4SVPROC glMultiTexCoord4sv = 0; + +Extension::SupportLevel init_arb_multitexture() +{ + if(is_version_at_least(1, 3)) + { + glActiveTexture = reinterpret_cast(get_proc_address("glActiveTexture")); + glClientActiveTexture = reinterpret_cast(get_proc_address("glClientActiveTexture")); + glMultiTexCoord1d = reinterpret_cast(get_proc_address("glMultiTexCoord1d")); + glMultiTexCoord1dv = reinterpret_cast(get_proc_address("glMultiTexCoord1dv")); + glMultiTexCoord1f = reinterpret_cast(get_proc_address("glMultiTexCoord1f")); + glMultiTexCoord1fv = reinterpret_cast(get_proc_address("glMultiTexCoord1fv")); + glMultiTexCoord1i = reinterpret_cast(get_proc_address("glMultiTexCoord1i")); + glMultiTexCoord1iv = reinterpret_cast(get_proc_address("glMultiTexCoord1iv")); + glMultiTexCoord1s = reinterpret_cast(get_proc_address("glMultiTexCoord1s")); + glMultiTexCoord1sv = reinterpret_cast(get_proc_address("glMultiTexCoord1sv")); + glMultiTexCoord2d = reinterpret_cast(get_proc_address("glMultiTexCoord2d")); + glMultiTexCoord2dv = reinterpret_cast(get_proc_address("glMultiTexCoord2dv")); + glMultiTexCoord2f = reinterpret_cast(get_proc_address("glMultiTexCoord2f")); + glMultiTexCoord2fv = reinterpret_cast(get_proc_address("glMultiTexCoord2fv")); + glMultiTexCoord2i = reinterpret_cast(get_proc_address("glMultiTexCoord2i")); + glMultiTexCoord2iv = reinterpret_cast(get_proc_address("glMultiTexCoord2iv")); + glMultiTexCoord2s = reinterpret_cast(get_proc_address("glMultiTexCoord2s")); + glMultiTexCoord2sv = reinterpret_cast(get_proc_address("glMultiTexCoord2sv")); + glMultiTexCoord3d = reinterpret_cast(get_proc_address("glMultiTexCoord3d")); + glMultiTexCoord3dv = reinterpret_cast(get_proc_address("glMultiTexCoord3dv")); + glMultiTexCoord3f = reinterpret_cast(get_proc_address("glMultiTexCoord3f")); + glMultiTexCoord3fv = reinterpret_cast(get_proc_address("glMultiTexCoord3fv")); + glMultiTexCoord3i = reinterpret_cast(get_proc_address("glMultiTexCoord3i")); + glMultiTexCoord3iv = reinterpret_cast(get_proc_address("glMultiTexCoord3iv")); + glMultiTexCoord3s = reinterpret_cast(get_proc_address("glMultiTexCoord3s")); + glMultiTexCoord3sv = reinterpret_cast(get_proc_address("glMultiTexCoord3sv")); + glMultiTexCoord4d = reinterpret_cast(get_proc_address("glMultiTexCoord4d")); + glMultiTexCoord4dv = reinterpret_cast(get_proc_address("glMultiTexCoord4dv")); + glMultiTexCoord4f = reinterpret_cast(get_proc_address("glMultiTexCoord4f")); + glMultiTexCoord4fv = reinterpret_cast(get_proc_address("glMultiTexCoord4fv")); + glMultiTexCoord4i = reinterpret_cast(get_proc_address("glMultiTexCoord4i")); + glMultiTexCoord4iv = reinterpret_cast(get_proc_address("glMultiTexCoord4iv")); + glMultiTexCoord4s = reinterpret_cast(get_proc_address("glMultiTexCoord4s")); + glMultiTexCoord4sv = reinterpret_cast(get_proc_address("glMultiTexCoord4sv")); + return Extension::CORE; + } + if(is_supported("GL_ARB_multitexture")) + { + glActiveTexture = reinterpret_cast(get_proc_address("glActiveTextureARB")); + glClientActiveTexture = reinterpret_cast(get_proc_address("glClientActiveTextureARB")); + glMultiTexCoord1d = reinterpret_cast(get_proc_address("glMultiTexCoord1dARB")); + glMultiTexCoord1dv = reinterpret_cast(get_proc_address("glMultiTexCoord1dvARB")); + glMultiTexCoord1f = reinterpret_cast(get_proc_address("glMultiTexCoord1fARB")); + glMultiTexCoord1fv = reinterpret_cast(get_proc_address("glMultiTexCoord1fvARB")); + glMultiTexCoord1i = reinterpret_cast(get_proc_address("glMultiTexCoord1iARB")); + glMultiTexCoord1iv = reinterpret_cast(get_proc_address("glMultiTexCoord1ivARB")); + glMultiTexCoord1s = reinterpret_cast(get_proc_address("glMultiTexCoord1sARB")); + glMultiTexCoord1sv = reinterpret_cast(get_proc_address("glMultiTexCoord1svARB")); + glMultiTexCoord2d = reinterpret_cast(get_proc_address("glMultiTexCoord2dARB")); + glMultiTexCoord2dv = reinterpret_cast(get_proc_address("glMultiTexCoord2dvARB")); + glMultiTexCoord2f = reinterpret_cast(get_proc_address("glMultiTexCoord2fARB")); + glMultiTexCoord2fv = reinterpret_cast(get_proc_address("glMultiTexCoord2fvARB")); + glMultiTexCoord2i = reinterpret_cast(get_proc_address("glMultiTexCoord2iARB")); + glMultiTexCoord2iv = reinterpret_cast(get_proc_address("glMultiTexCoord2ivARB")); + glMultiTexCoord2s = reinterpret_cast(get_proc_address("glMultiTexCoord2sARB")); + glMultiTexCoord2sv = reinterpret_cast(get_proc_address("glMultiTexCoord2svARB")); + glMultiTexCoord3d = reinterpret_cast(get_proc_address("glMultiTexCoord3dARB")); + glMultiTexCoord3dv = reinterpret_cast(get_proc_address("glMultiTexCoord3dvARB")); + glMultiTexCoord3f = reinterpret_cast(get_proc_address("glMultiTexCoord3fARB")); + glMultiTexCoord3fv = reinterpret_cast(get_proc_address("glMultiTexCoord3fvARB")); + glMultiTexCoord3i = reinterpret_cast(get_proc_address("glMultiTexCoord3iARB")); + glMultiTexCoord3iv = reinterpret_cast(get_proc_address("glMultiTexCoord3ivARB")); + glMultiTexCoord3s = reinterpret_cast(get_proc_address("glMultiTexCoord3sARB")); + glMultiTexCoord3sv = reinterpret_cast(get_proc_address("glMultiTexCoord3svARB")); + glMultiTexCoord4d = reinterpret_cast(get_proc_address("glMultiTexCoord4dARB")); + glMultiTexCoord4dv = reinterpret_cast(get_proc_address("glMultiTexCoord4dvARB")); + glMultiTexCoord4f = reinterpret_cast(get_proc_address("glMultiTexCoord4fARB")); + glMultiTexCoord4fv = reinterpret_cast(get_proc_address("glMultiTexCoord4fvARB")); + glMultiTexCoord4i = reinterpret_cast(get_proc_address("glMultiTexCoord4iARB")); + glMultiTexCoord4iv = reinterpret_cast(get_proc_address("glMultiTexCoord4ivARB")); + glMultiTexCoord4s = reinterpret_cast(get_proc_address("glMultiTexCoord4sARB")); + glMultiTexCoord4sv = reinterpret_cast(get_proc_address("glMultiTexCoord4svARB")); + return Extension::EXTENSION; + } + return Extension::UNSUPPORTED; +} + +Extension ARB_multitexture("GL_ARB_multitexture", init_arb_multitexture); + +} // namespace GL +} // namespace Msp