/* This file is part of Magnum. Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Vladimír Vondruš Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ #include "flextGL.h" #include #include #include "Magnum/Platform/Implementation/OpenGLFunctionLoader.h" void flextGLInit(Magnum::GL::Context&) { Magnum::Platform::Implementation::OpenGLFunctionLoader loader; /* GL_ANGLE_framebuffer_blit */ flextglBlitFramebufferANGLE = reinterpret_cast(loader.load("glBlitFramebufferANGLE")); /* GL_ANGLE_framebuffer_multisample */ flextglRenderbufferStorageMultisampleANGLE = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleANGLE")); /* GL_ANGLE_instanced_arrays */ flextglDrawArraysInstancedANGLE = reinterpret_cast(loader.load("glDrawArraysInstancedANGLE")); flextglDrawElementsInstancedANGLE = reinterpret_cast(loader.load("glDrawElementsInstancedANGLE")); flextglVertexAttribDivisorANGLE = reinterpret_cast(loader.load("glVertexAttribDivisorANGLE")); /* GL_APPLE_framebuffer_multisample */ flextglRenderbufferStorageMultisampleAPPLE = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleAPPLE")); flextglResolveMultisampleFramebufferAPPLE = reinterpret_cast(loader.load("glResolveMultisampleFramebufferAPPLE")); /* GL_EXT_debug_label */ flextglGetObjectLabelEXT = reinterpret_cast(loader.load("glGetObjectLabelEXT")); flextglLabelObjectEXT = reinterpret_cast(loader.load("glLabelObjectEXT")); /* GL_EXT_debug_marker */ flextglInsertEventMarkerEXT = reinterpret_cast(loader.load("glInsertEventMarkerEXT")); flextglPopGroupMarkerEXT = reinterpret_cast(loader.load("glPopGroupMarkerEXT")); flextglPushGroupMarkerEXT = reinterpret_cast(loader.load("glPushGroupMarkerEXT")); /* GL_EXT_discard_framebuffer */ flextglDiscardFramebufferEXT = reinterpret_cast(loader.load("glDiscardFramebufferEXT")); /* GL_EXT_disjoint_timer_query */ flextglGetInteger64vEXT = reinterpret_cast(loader.load("glGetInteger64vEXT")); flextglGetQueryObjecti64vEXT = reinterpret_cast(loader.load("glGetQueryObjecti64vEXT")); flextglGetQueryObjectivEXT = reinterpret_cast(loader.load("glGetQueryObjectivEXT")); flextglGetQueryObjectui64vEXT = reinterpret_cast(loader.load("glGetQueryObjectui64vEXT")); flextglQueryCounterEXT = reinterpret_cast(loader.load("glQueryCounterEXT")); /* GL_EXT_draw_buffers */ flextglDrawBuffersEXT = reinterpret_cast(loader.load("glDrawBuffersEXT")); /* GL_EXT_draw_buffers_indexed */ flextglBlendEquationSeparateiEXT = reinterpret_cast(loader.load("glBlendEquationSeparateiEXT")); flextglBlendEquationiEXT = reinterpret_cast(loader.load("glBlendEquationiEXT")); flextglBlendFuncSeparateiEXT = reinterpret_cast(loader.load("glBlendFuncSeparateiEXT")); flextglBlendFunciEXT = reinterpret_cast(loader.load("glBlendFunciEXT")); flextglColorMaskiEXT = reinterpret_cast(loader.load("glColorMaskiEXT")); flextglDisableiEXT = reinterpret_cast(loader.load("glDisableiEXT")); flextglEnableiEXT = reinterpret_cast(loader.load("glEnableiEXT")); flextglIsEnablediEXT = reinterpret_cast(loader.load("glIsEnablediEXT")); /* GL_EXT_instanced_arrays */ flextglDrawArraysInstancedEXT = reinterpret_cast(loader.load("glDrawArraysInstancedEXT")); flextglDrawElementsInstancedEXT = reinterpret_cast(loader.load("glDrawElementsInstancedEXT")); flextglVertexAttribDivisorEXT = reinterpret_cast(loader.load("glVertexAttribDivisorEXT")); /* GL_EXT_map_buffer_range */ flextglFlushMappedBufferRangeEXT = reinterpret_cast(loader.load("glFlushMappedBufferRangeEXT")); flextglMapBufferRangeEXT = reinterpret_cast(loader.load("glMapBufferRangeEXT")); /* GL_EXT_multi_draw_arrays */ flextglMultiDrawArraysEXT = reinterpret_cast(loader.load("glMultiDrawArraysEXT")); flextglMultiDrawElementsEXT = reinterpret_cast(loader.load("glMultiDrawElementsEXT")); /* GL_EXT_multisampled_render_to_texture */ flextglFramebufferTexture2DMultisampleEXT = reinterpret_cast(loader.load("glFramebufferTexture2DMultisampleEXT")); flextglRenderbufferStorageMultisampleEXT = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleEXT")); /* GL_EXT_occlusion_query_boolean */ flextglBeginQueryEXT = reinterpret_cast(loader.load("glBeginQueryEXT")); flextglDeleteQueriesEXT = reinterpret_cast(loader.load("glDeleteQueriesEXT")); flextglEndQueryEXT = reinterpret_cast(loader.load("glEndQueryEXT")); flextglGenQueriesEXT = reinterpret_cast(loader.load("glGenQueriesEXT")); flextglGetQueryObjectuivEXT = reinterpret_cast(loader.load("glGetQueryObjectuivEXT")); flextglGetQueryivEXT = reinterpret_cast(loader.load("glGetQueryivEXT")); flextglIsQueryEXT = reinterpret_cast(loader.load("glIsQueryEXT")); /* GL_EXT_polygon_offset_clamp */ flextglPolygonOffsetClampEXT = reinterpret_cast(loader.load("glPolygonOffsetClampEXT")); /* GL_EXT_robustness */ flextglGetGraphicsResetStatusEXT = reinterpret_cast(loader.load("glGetGraphicsResetStatusEXT")); flextglGetnUniformfvEXT = reinterpret_cast(loader.load("glGetnUniformfvEXT")); flextglGetnUniformivEXT = reinterpret_cast(loader.load("glGetnUniformivEXT")); flextglReadnPixelsEXT = reinterpret_cast(loader.load("glReadnPixelsEXT")); /* GL_EXT_separate_shader_objects */ flextglActiveShaderProgramEXT = reinterpret_cast(loader.load("glActiveShaderProgramEXT")); flextglBindProgramPipelineEXT = reinterpret_cast(loader.load("glBindProgramPipelineEXT")); flextglCreateShaderProgramvEXT = reinterpret_cast(loader.load("glCreateShaderProgramvEXT")); flextglDeleteProgramPipelinesEXT = reinterpret_cast(loader.load("glDeleteProgramPipelinesEXT")); flextglGenProgramPipelinesEXT = reinterpret_cast(loader.load("glGenProgramPipelinesEXT")); flextglGetProgramPipelineInfoLogEXT = reinterpret_cast(loader.load("glGetProgramPipelineInfoLogEXT")); flextglGetProgramPipelineivEXT = reinterpret_cast(loader.load("glGetProgramPipelineivEXT")); flextglIsProgramPipelineEXT = reinterpret_cast(loader.load("glIsProgramPipelineEXT")); flextglProgramParameteriEXT = reinterpret_cast(loader.load("glProgramParameteriEXT")); flextglProgramUniform1fEXT = reinterpret_cast(loader.load("glProgramUniform1fEXT")); flextglProgramUniform1fvEXT = reinterpret_cast(loader.load("glProgramUniform1fvEXT")); flextglProgramUniform1iEXT = reinterpret_cast(loader.load("glProgramUniform1iEXT")); flextglProgramUniform1ivEXT = reinterpret_cast(loader.load("glProgramUniform1ivEXT")); flextglProgramUniform2fEXT = reinterpret_cast(loader.load("glProgramUniform2fEXT")); flextglProgramUniform2fvEXT = reinterpret_cast(loader.load("glProgramUniform2fvEXT")); flextglProgramUniform2iEXT = reinterpret_cast(loader.load("glProgramUniform2iEXT")); flextglProgramUniform2ivEXT = reinterpret_cast(loader.load("glProgramUniform2ivEXT")); flextglProgramUniform3fEXT = reinterpret_cast(loader.load("glProgramUniform3fEXT")); flextglProgramUniform3fvEXT = reinterpret_cast(loader.load("glProgramUniform3fvEXT")); flextglProgramUniform3iEXT = reinterpret_cast(loader.load("glProgramUniform3iEXT")); flextglProgramUniform3ivEXT = reinterpret_cast(loader.load("glProgramUniform3ivEXT")); flextglProgramUniform4fEXT = reinterpret_cast(loader.load("glProgramUniform4fEXT")); flextglProgramUniform4fvEXT = reinterpret_cast(loader.load("glProgramUniform4fvEXT")); flextglProgramUniform4iEXT = reinterpret_cast(loader.load("glProgramUniform4iEXT")); flextglProgramUniform4ivEXT = reinterpret_cast(loader.load("glProgramUniform4ivEXT")); flextglProgramUniformMatrix2fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix2fvEXT")); flextglProgramUniformMatrix3fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix3fvEXT")); flextglProgramUniformMatrix4fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix4fvEXT")); flextglUseProgramStagesEXT = reinterpret_cast(loader.load("glUseProgramStagesEXT")); flextglValidateProgramPipelineEXT = reinterpret_cast(loader.load("glValidateProgramPipelineEXT")); /* GL_EXT_texture_border_clamp */ flextglGetSamplerParameterIivEXT = reinterpret_cast(loader.load("glGetSamplerParameterIivEXT")); flextglGetSamplerParameterIuivEXT = reinterpret_cast(loader.load("glGetSamplerParameterIuivEXT")); flextglGetTexParameterIivEXT = reinterpret_cast(loader.load("glGetTexParameterIivEXT")); flextglGetTexParameterIuivEXT = reinterpret_cast(loader.load("glGetTexParameterIuivEXT")); flextglSamplerParameterIivEXT = reinterpret_cast(loader.load("glSamplerParameterIivEXT")); flextglSamplerParameterIuivEXT = reinterpret_cast(loader.load("glSamplerParameterIuivEXT")); flextglTexParameterIivEXT = reinterpret_cast(loader.load("glTexParameterIivEXT")); flextglTexParameterIuivEXT = reinterpret_cast(loader.load("glTexParameterIuivEXT")); /* GL_EXT_texture_storage */ flextglTexStorage2DEXT = reinterpret_cast(loader.load("glTexStorage2DEXT")); flextglTexStorage3DEXT = reinterpret_cast(loader.load("glTexStorage3DEXT")); /* GL_KHR_blend_equation_advanced */ flextglBlendBarrierKHR = reinterpret_cast(loader.load("glBlendBarrierKHR")); /* GL_KHR_debug */ flextglDebugMessageCallbackKHR = reinterpret_cast(loader.load("glDebugMessageCallbackKHR")); flextglDebugMessageControlKHR = reinterpret_cast(loader.load("glDebugMessageControlKHR")); flextglDebugMessageInsertKHR = reinterpret_cast(loader.load("glDebugMessageInsertKHR")); flextglGetDebugMessageLogKHR = reinterpret_cast(loader.load("glGetDebugMessageLogKHR")); flextglGetObjectLabelKHR = reinterpret_cast(loader.load("glGetObjectLabelKHR")); flextglGetObjectPtrLabelKHR = reinterpret_cast(loader.load("glGetObjectPtrLabelKHR")); flextglGetPointervKHR = reinterpret_cast(loader.load("glGetPointervKHR")); flextglObjectLabelKHR = reinterpret_cast(loader.load("glObjectLabelKHR")); flextglObjectPtrLabelKHR = reinterpret_cast(loader.load("glObjectPtrLabelKHR")); flextglPopDebugGroupKHR = reinterpret_cast(loader.load("glPopDebugGroupKHR")); flextglPushDebugGroupKHR = reinterpret_cast(loader.load("glPushDebugGroupKHR")); /* GL_KHR_robustness */ flextglGetGraphicsResetStatusKHR = reinterpret_cast(loader.load("glGetGraphicsResetStatusKHR")); flextglGetnUniformfvKHR = reinterpret_cast(loader.load("glGetnUniformfvKHR")); flextglGetnUniformivKHR = reinterpret_cast(loader.load("glGetnUniformivKHR")); flextglGetnUniformuivKHR = reinterpret_cast(loader.load("glGetnUniformuivKHR")); flextglReadnPixelsKHR = reinterpret_cast(loader.load("glReadnPixelsKHR")); /* GL_NV_draw_buffers */ flextglDrawBuffersNV = reinterpret_cast(loader.load("glDrawBuffersNV")); /* GL_NV_draw_instanced */ flextglDrawArraysInstancedNV = reinterpret_cast(loader.load("glDrawArraysInstancedNV")); flextglDrawElementsInstancedNV = reinterpret_cast(loader.load("glDrawElementsInstancedNV")); /* GL_NV_framebuffer_blit */ flextglBlitFramebufferNV = reinterpret_cast(loader.load("glBlitFramebufferNV")); /* GL_NV_framebuffer_multisample */ flextglRenderbufferStorageMultisampleNV = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleNV")); /* GL_NV_instanced_arrays */ flextglVertexAttribDivisorNV = reinterpret_cast(loader.load("glVertexAttribDivisorNV")); /* GL_NV_polygon_mode */ flextglPolygonModeNV = reinterpret_cast(loader.load("glPolygonModeNV")); /* GL_NV_read_buffer */ flextglReadBufferNV = reinterpret_cast(loader.load("glReadBufferNV")); /* GL_OES_mapbuffer */ flextglGetBufferPointervOES = reinterpret_cast(loader.load("glGetBufferPointervOES")); flextglMapBufferOES = reinterpret_cast(loader.load("glMapBufferOES")); flextglUnmapBufferOES = reinterpret_cast(loader.load("glUnmapBufferOES")); /* GL_OES_texture_3D */ flextglCompressedTexImage3DOES = reinterpret_cast(loader.load("glCompressedTexImage3DOES")); flextglCompressedTexSubImage3DOES = reinterpret_cast(loader.load("glCompressedTexSubImage3DOES")); flextglCopyTexSubImage3DOES = reinterpret_cast(loader.load("glCopyTexSubImage3DOES")); flextglFramebufferTexture3DOES = reinterpret_cast(loader.load("glFramebufferTexture3DOES")); flextglTexImage3DOES = reinterpret_cast(loader.load("glTexImage3DOES")); flextglTexSubImage3DOES = reinterpret_cast(loader.load("glTexSubImage3DOES")); /* GL_OES_vertex_array_object */ flextglBindVertexArrayOES = reinterpret_cast(loader.load("glBindVertexArrayOES")); flextglDeleteVertexArraysOES = reinterpret_cast(loader.load("glDeleteVertexArraysOES")); flextglGenVertexArraysOES = reinterpret_cast(loader.load("glGenVertexArraysOES")); flextglIsVertexArrayOES = reinterpret_cast(loader.load("glIsVertexArrayOES")); }