X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Farb_vertex_buffer_object.cpp;h=cf623c476221a66ec8cd21e75fd971b9c6a837f4;hp=66ef40e5d952d9845147091ec4da51a6e1ce3fff;hb=6afbace895a7bbcf216ab8e48280ea0303ab5892;hpb=485315ca65cb40f33253008a79b0933997bd74f5 diff --git a/source/arb_vertex_buffer_object.cpp b/source/arb_vertex_buffer_object.cpp index 66ef40e5..cf623c47 100644 --- a/source/arb_vertex_buffer_object.cpp +++ b/source/arb_vertex_buffer_object.cpp @@ -1,35 +1,56 @@ -#include "extension.h" #include "arb_vertex_buffer_object.h" namespace Msp { namespace GL { -PFNGLBINDBUFFERARBPROC glBindBufferARB = 0; -PFNGLDELETEBUFFERSARBPROC glDeleteBuffersARB = 0; -PFNGLGENBUFFERSARBPROC glGenBuffersARB = 0; -PFNGLISBUFFERARBPROC glIsBufferARB = 0; -PFNGLBUFFERDATAARBPROC glBufferDataARB = 0; -PFNGLBUFFERSUBDATAARBPROC glBufferSubDataARB = 0; -PFNGLGETBUFFERSUBDATAARBPROC glGetBufferSubDataARB = 0; -PFNGLMAPBUFFERARBPROC glMapBufferARB = 0; -PFNGLUNMAPBUFFERARBPROC glUnmapBufferARB = 0; -PFNGLGETBUFFERPARAMETERIVARBPROC glGetBufferParameterivARB = 0; -PFNGLGETBUFFERPOINTERVARBPROC glGetBufferPointervARB = 0; +PFNGLBINDBUFFERPROC glBindBuffer = 0; +PFNGLBUFFERDATAPROC glBufferData = 0; +PFNGLBUFFERSUBDATAPROC glBufferSubData = 0; +PFNGLDELETEBUFFERSPROC glDeleteBuffers = 0; +PFNGLGENBUFFERSPROC glGenBuffers = 0; +PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv = 0; +PFNGLGETBUFFERPOINTERVPROC glGetBufferPointerv = 0; +PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData = 0; +PFNGLISBUFFERPROC glIsBuffer = 0; +PFNGLMAPBUFFERPROC glMapBuffer = 0; +PFNGLUNMAPBUFFERPROC glUnmapBuffer = 0; -void init_arb_vertex_buffer_object() +Extension::SupportLevel init_arb_vertex_buffer_object() { - glBindBufferARB = reinterpret_cast(get_proc_address("glBindBufferARB")); - glDeleteBuffersARB = reinterpret_cast(get_proc_address("glDeleteBuffersARB")); - glGenBuffersARB = reinterpret_cast(get_proc_address("glGenBuffersARB")); - glIsBufferARB = reinterpret_cast(get_proc_address("glIsBufferARB")); - glBufferDataARB = reinterpret_cast(get_proc_address("glBufferDataARB")); - glBufferSubDataARB = reinterpret_cast(get_proc_address("glBufferSubDataARB")); - glGetBufferSubDataARB = reinterpret_cast(get_proc_address("glGetBufferSubDataARB")); - glMapBufferARB = reinterpret_cast(get_proc_address("glMapBufferARB")); - glUnmapBufferARB = reinterpret_cast(get_proc_address("glUnmapBufferARB")); - glGetBufferParameterivARB = reinterpret_cast(get_proc_address("glGetBufferParameterivARB")); - glGetBufferPointervARB = reinterpret_cast(get_proc_address("glGetBufferPointervARB")); + if(is_version_at_least(1, 5)) + { + glBindBuffer = reinterpret_cast(get_proc_address("glBindBuffer")); + glBufferData = reinterpret_cast(get_proc_address("glBufferData")); + glBufferSubData = reinterpret_cast(get_proc_address("glBufferSubData")); + glDeleteBuffers = reinterpret_cast(get_proc_address("glDeleteBuffers")); + glGenBuffers = reinterpret_cast(get_proc_address("glGenBuffers")); + glGetBufferParameteriv = reinterpret_cast(get_proc_address("glGetBufferParameteriv")); + glGetBufferPointerv = reinterpret_cast(get_proc_address("glGetBufferPointerv")); + glGetBufferSubData = reinterpret_cast(get_proc_address("glGetBufferSubData")); + glIsBuffer = reinterpret_cast(get_proc_address("glIsBuffer")); + glMapBuffer = reinterpret_cast(get_proc_address("glMapBuffer")); + glUnmapBuffer = reinterpret_cast(get_proc_address("glUnmapBuffer")); + return Extension::CORE; + } + if(is_supported("GL_ARB_vertex_buffer_object")) + { + glBindBuffer = reinterpret_cast(get_proc_address("glBindBufferARB")); + glBufferData = reinterpret_cast(get_proc_address("glBufferDataARB")); + glBufferSubData = reinterpret_cast(get_proc_address("glBufferSubDataARB")); + glDeleteBuffers = reinterpret_cast(get_proc_address("glDeleteBuffersARB")); + glGenBuffers = reinterpret_cast(get_proc_address("glGenBuffersARB")); + glGetBufferParameteriv = reinterpret_cast(get_proc_address("glGetBufferParameterivARB")); + glGetBufferPointerv = reinterpret_cast(get_proc_address("glGetBufferPointervARB")); + glGetBufferSubData = reinterpret_cast(get_proc_address("glGetBufferSubDataARB")); + glIsBuffer = reinterpret_cast(get_proc_address("glIsBufferARB")); + glMapBuffer = reinterpret_cast(get_proc_address("glMapBufferARB")); + glUnmapBuffer = reinterpret_cast(get_proc_address("glUnmapBufferARB")); + return Extension::EXTENSION; + } + return Extension::UNSUPPORTED; } +Extension ARB_vertex_buffer_object("GL_ARB_vertex_buffer_object", init_arb_vertex_buffer_object); + } // namespace GL } // namespace Msp