X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Farb_uniform_buffer_object.cpp;h=9b224ffb607343fe01d5d7afb5d6aefe6ea90e24;hp=b788e03686cf3615968e391e8dd77ff3e2c16af0;hb=6afbace895a7bbcf216ab8e48280ea0303ab5892;hpb=485315ca65cb40f33253008a79b0933997bd74f5 diff --git a/source/arb_uniform_buffer_object.cpp b/source/arb_uniform_buffer_object.cpp index b788e036..9b224ffb 100644 --- a/source/arb_uniform_buffer_object.cpp +++ b/source/arb_uniform_buffer_object.cpp @@ -1,31 +1,37 @@ -#include "extension.h" #include "arb_uniform_buffer_object.h" namespace Msp { namespace GL { -PFNGLGETUNIFORMINDICESPROC glGetUniformIndices = 0; -PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv = 0; +PFNGLBINDBUFFERBASEPROC glBindBufferBase = 0; +PFNGLBINDBUFFERRANGEPROC glBindBufferRange = 0; +PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName = 0; +PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv = 0; PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName = 0; +PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv = 0; PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex = 0; -PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv = 0; -PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName = 0; +PFNGLGETUNIFORMINDICESPROC glGetUniformIndices = 0; PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding = 0; -PFNGLBINDBUFFERBASEPROC glBindBufferBase = 0; -PFNGLBINDBUFFERRANGEPROC glBindBufferRange = 0; -void init_arb_uniform_buffer_object() +Extension::SupportLevel init_arb_uniform_buffer_object() { - glGetUniformIndices = reinterpret_cast(get_proc_address("glGetUniformIndices")); - glGetActiveUniformsiv = reinterpret_cast(get_proc_address("glGetActiveUniformsiv")); - glGetActiveUniformName = reinterpret_cast(get_proc_address("glGetActiveUniformName")); - glGetUniformBlockIndex = reinterpret_cast(get_proc_address("glGetUniformBlockIndex")); - glGetActiveUniformBlockiv = reinterpret_cast(get_proc_address("glGetActiveUniformBlockiv")); - glGetActiveUniformBlockName = reinterpret_cast(get_proc_address("glGetActiveUniformBlockName")); - glUniformBlockBinding = reinterpret_cast(get_proc_address("glUniformBlockBinding")); - glBindBufferBase = reinterpret_cast(get_proc_address("glBindBufferBase")); - glBindBufferRange = reinterpret_cast(get_proc_address("glBindBufferRange")); + if(is_version_at_least(3, 0) || is_supported("GL_ARB_uniform_buffer_object")) + { + glBindBufferBase = reinterpret_cast(get_proc_address("glBindBufferBase")); + glBindBufferRange = reinterpret_cast(get_proc_address("glBindBufferRange")); + glGetActiveUniformBlockName = reinterpret_cast(get_proc_address("glGetActiveUniformBlockName")); + glGetActiveUniformBlockiv = reinterpret_cast(get_proc_address("glGetActiveUniformBlockiv")); + glGetActiveUniformName = reinterpret_cast(get_proc_address("glGetActiveUniformName")); + glGetActiveUniformsiv = reinterpret_cast(get_proc_address("glGetActiveUniformsiv")); + glGetUniformBlockIndex = reinterpret_cast(get_proc_address("glGetUniformBlockIndex")); + glGetUniformIndices = reinterpret_cast(get_proc_address("glGetUniformIndices")); + glUniformBlockBinding = reinterpret_cast(get_proc_address("glUniformBlockBinding")); + return Extension::CORE; + } + return Extension::UNSUPPORTED; } +Extension ARB_uniform_buffer_object("GL_ARB_uniform_buffer_object", init_arb_uniform_buffer_object); + } // namespace GL } // namespace Msp