X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fext_framebuffer_object.cpp;h=e9193e1773eba757656b106d4d9323a68e5ca42d;hp=ab5048d6bb8fe2521a890484988ef049591726d7;hb=6afbace895a7bbcf216ab8e48280ea0303ab5892;hpb=485315ca65cb40f33253008a79b0933997bd74f5 diff --git a/source/ext_framebuffer_object.cpp b/source/ext_framebuffer_object.cpp index ab5048d6..e9193e17 100644 --- a/source/ext_framebuffer_object.cpp +++ b/source/ext_framebuffer_object.cpp @@ -1,47 +1,74 @@ -#include "extension.h" #include "ext_framebuffer_object.h" namespace Msp { namespace GL { -PFNGLISRENDERBUFFEREXTPROC glIsRenderbufferEXT = 0; -PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT = 0; -PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT = 0; -PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT = 0; -PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT = 0; -PFNGLGETRENDERBUFFERPARAMETERIVEXTPROC glGetRenderbufferParameterivEXT = 0; -PFNGLISFRAMEBUFFEREXTPROC glIsFramebufferEXT = 0; -PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT = 0; -PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT = 0; -PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT = 0; -PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT = 0; -PFNGLFRAMEBUFFERTEXTURE1DEXTPROC glFramebufferTexture1DEXT = 0; -PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT = 0; -PFNGLFRAMEBUFFERTEXTURE3DEXTPROC glFramebufferTexture3DEXT = 0; -PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT = 0; -PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXTPROC glGetFramebufferAttachmentParameterivEXT = 0; -PFNGLGENERATEMIPMAPEXTPROC glGenerateMipmapEXT = 0; +PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer = 0; +PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer = 0; +PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus = 0; +PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers = 0; +PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers = 0; +PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer = 0; +PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D = 0; +PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D = 0; +PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D = 0; +PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers = 0; +PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers = 0; +PFNGLGENERATEMIPMAPPROC glGenerateMipmap = 0; +PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv = 0; +PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv = 0; +PFNGLISFRAMEBUFFERPROC glIsFramebuffer = 0; +PFNGLISRENDERBUFFERPROC glIsRenderbuffer = 0; +PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage = 0; -void init_ext_framebuffer_object() +Extension::SupportLevel init_ext_framebuffer_object() { - glIsRenderbufferEXT = reinterpret_cast(get_proc_address("glIsRenderbufferEXT")); - glBindRenderbufferEXT = reinterpret_cast(get_proc_address("glBindRenderbufferEXT")); - glDeleteRenderbuffersEXT = reinterpret_cast(get_proc_address("glDeleteRenderbuffersEXT")); - glGenRenderbuffersEXT = reinterpret_cast(get_proc_address("glGenRenderbuffersEXT")); - glRenderbufferStorageEXT = reinterpret_cast(get_proc_address("glRenderbufferStorageEXT")); - glGetRenderbufferParameterivEXT = reinterpret_cast(get_proc_address("glGetRenderbufferParameterivEXT")); - glIsFramebufferEXT = reinterpret_cast(get_proc_address("glIsFramebufferEXT")); - glBindFramebufferEXT = reinterpret_cast(get_proc_address("glBindFramebufferEXT")); - glDeleteFramebuffersEXT = reinterpret_cast(get_proc_address("glDeleteFramebuffersEXT")); - glGenFramebuffersEXT = reinterpret_cast(get_proc_address("glGenFramebuffersEXT")); - glCheckFramebufferStatusEXT = reinterpret_cast(get_proc_address("glCheckFramebufferStatusEXT")); - glFramebufferTexture1DEXT = reinterpret_cast(get_proc_address("glFramebufferTexture1DEXT")); - glFramebufferTexture2DEXT = reinterpret_cast(get_proc_address("glFramebufferTexture2DEXT")); - glFramebufferTexture3DEXT = reinterpret_cast(get_proc_address("glFramebufferTexture3DEXT")); - glFramebufferRenderbufferEXT = reinterpret_cast(get_proc_address("glFramebufferRenderbufferEXT")); - glGetFramebufferAttachmentParameterivEXT = reinterpret_cast(get_proc_address("glGetFramebufferAttachmentParameterivEXT")); - glGenerateMipmapEXT = reinterpret_cast(get_proc_address("glGenerateMipmapEXT")); + if(is_version_at_least(3, 0) || is_supported("GL_ARB_framebuffer_object")) + { + glBindFramebuffer = reinterpret_cast(get_proc_address("glBindFramebuffer")); + glBindRenderbuffer = reinterpret_cast(get_proc_address("glBindRenderbuffer")); + glCheckFramebufferStatus = reinterpret_cast(get_proc_address("glCheckFramebufferStatus")); + glDeleteFramebuffers = reinterpret_cast(get_proc_address("glDeleteFramebuffers")); + glDeleteRenderbuffers = reinterpret_cast(get_proc_address("glDeleteRenderbuffers")); + glFramebufferRenderbuffer = reinterpret_cast(get_proc_address("glFramebufferRenderbuffer")); + glFramebufferTexture1D = reinterpret_cast(get_proc_address("glFramebufferTexture1D")); + glFramebufferTexture2D = reinterpret_cast(get_proc_address("glFramebufferTexture2D")); + glFramebufferTexture3D = reinterpret_cast(get_proc_address("glFramebufferTexture3D")); + glGenFramebuffers = reinterpret_cast(get_proc_address("glGenFramebuffers")); + glGenRenderbuffers = reinterpret_cast(get_proc_address("glGenRenderbuffers")); + glGenerateMipmap = reinterpret_cast(get_proc_address("glGenerateMipmap")); + glGetFramebufferAttachmentParameteriv = reinterpret_cast(get_proc_address("glGetFramebufferAttachmentParameteriv")); + glGetRenderbufferParameteriv = reinterpret_cast(get_proc_address("glGetRenderbufferParameteriv")); + glIsFramebuffer = reinterpret_cast(get_proc_address("glIsFramebuffer")); + glIsRenderbuffer = reinterpret_cast(get_proc_address("glIsRenderbuffer")); + glRenderbufferStorage = reinterpret_cast(get_proc_address("glRenderbufferStorage")); + return Extension::CORE; + } + if(is_supported("GL_EXT_framebuffer_object")) + { + glBindFramebuffer = reinterpret_cast(get_proc_address("glBindFramebufferEXT")); + glBindRenderbuffer = reinterpret_cast(get_proc_address("glBindRenderbufferEXT")); + glCheckFramebufferStatus = reinterpret_cast(get_proc_address("glCheckFramebufferStatusEXT")); + glDeleteFramebuffers = reinterpret_cast(get_proc_address("glDeleteFramebuffersEXT")); + glDeleteRenderbuffers = reinterpret_cast(get_proc_address("glDeleteRenderbuffersEXT")); + glFramebufferRenderbuffer = reinterpret_cast(get_proc_address("glFramebufferRenderbufferEXT")); + glFramebufferTexture1D = reinterpret_cast(get_proc_address("glFramebufferTexture1DEXT")); + glFramebufferTexture2D = reinterpret_cast(get_proc_address("glFramebufferTexture2DEXT")); + glFramebufferTexture3D = reinterpret_cast(get_proc_address("glFramebufferTexture3DEXT")); + glGenFramebuffers = reinterpret_cast(get_proc_address("glGenFramebuffersEXT")); + glGenRenderbuffers = reinterpret_cast(get_proc_address("glGenRenderbuffersEXT")); + glGenerateMipmap = reinterpret_cast(get_proc_address("glGenerateMipmapEXT")); + glGetFramebufferAttachmentParameteriv = reinterpret_cast(get_proc_address("glGetFramebufferAttachmentParameterivEXT")); + glGetRenderbufferParameteriv = reinterpret_cast(get_proc_address("glGetRenderbufferParameterivEXT")); + glIsFramebuffer = reinterpret_cast(get_proc_address("glIsFramebufferEXT")); + glIsRenderbuffer = reinterpret_cast(get_proc_address("glIsRenderbufferEXT")); + glRenderbufferStorage = reinterpret_cast(get_proc_address("glRenderbufferStorageEXT")); + return Extension::EXTENSION; + } + return Extension::UNSUPPORTED; } +Extension EXT_framebuffer_object("GL_EXT_framebuffer_object", init_ext_framebuffer_object); + } // namespace GL } // namespace Msp