/* This file is part of Magnum. Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 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 */ flextGL.BlitFramebufferANGLE = reinterpret_cast(loader.load("glBlitFramebufferANGLE")); /* GL_ANGLE_framebuffer_multisample */ flextGL.RenderbufferStorageMultisampleANGLE = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleANGLE")); /* GL_ANGLE_instanced_arrays */ flextGL.DrawArraysInstancedANGLE = reinterpret_cast(loader.load("glDrawArraysInstancedANGLE")); flextGL.DrawElementsInstancedANGLE = reinterpret_cast(loader.load("glDrawElementsInstancedANGLE")); flextGL.VertexAttribDivisorANGLE = reinterpret_cast(loader.load("glVertexAttribDivisorANGLE")); /* GL_ANGLE_multi_draw */ flextGL.MultiDrawArraysANGLE = reinterpret_cast(loader.load("glMultiDrawArraysANGLE")); flextGL.MultiDrawArraysInstancedANGLE = reinterpret_cast(loader.load("glMultiDrawArraysInstancedANGLE")); flextGL.MultiDrawElementsANGLE = reinterpret_cast(loader.load("glMultiDrawElementsANGLE")); flextGL.MultiDrawElementsInstancedANGLE = reinterpret_cast(loader.load("glMultiDrawElementsInstancedANGLE")); /* GL_APPLE_framebuffer_multisample */ flextGL.RenderbufferStorageMultisampleAPPLE = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleAPPLE")); flextGL.ResolveMultisampleFramebufferAPPLE = reinterpret_cast(loader.load("glResolveMultisampleFramebufferAPPLE")); /* GL_EXT_clip_control */ flextGL.ClipControlEXT = reinterpret_cast(loader.load("glClipControlEXT")); /* GL_EXT_debug_label */ flextGL.GetObjectLabelEXT = reinterpret_cast(loader.load("glGetObjectLabelEXT")); flextGL.LabelObjectEXT = reinterpret_cast(loader.load("glLabelObjectEXT")); /* GL_EXT_debug_marker */ flextGL.InsertEventMarkerEXT = reinterpret_cast(loader.load("glInsertEventMarkerEXT")); flextGL.PopGroupMarkerEXT = reinterpret_cast(loader.load("glPopGroupMarkerEXT")); flextGL.PushGroupMarkerEXT = reinterpret_cast(loader.load("glPushGroupMarkerEXT")); /* GL_EXT_discard_framebuffer */ flextGL.DiscardFramebufferEXT = reinterpret_cast(loader.load("glDiscardFramebufferEXT")); /* GL_EXT_disjoint_timer_query */ flextGL.GetInteger64vEXT = reinterpret_cast(loader.load("glGetInteger64vEXT")); flextGL.GetQueryObjecti64vEXT = reinterpret_cast(loader.load("glGetQueryObjecti64vEXT")); flextGL.GetQueryObjectivEXT = reinterpret_cast(loader.load("glGetQueryObjectivEXT")); flextGL.GetQueryObjectui64vEXT = reinterpret_cast(loader.load("glGetQueryObjectui64vEXT")); flextGL.QueryCounterEXT = reinterpret_cast(loader.load("glQueryCounterEXT")); /* GL_EXT_draw_buffers */ flextGL.DrawBuffersEXT = reinterpret_cast(loader.load("glDrawBuffersEXT")); /* GL_EXT_draw_buffers_indexed */ flextGL.BlendEquationSeparateiEXT = reinterpret_cast(loader.load("glBlendEquationSeparateiEXT")); flextGL.BlendEquationiEXT = reinterpret_cast(loader.load("glBlendEquationiEXT")); flextGL.BlendFuncSeparateiEXT = reinterpret_cast(loader.load("glBlendFuncSeparateiEXT")); flextGL.BlendFunciEXT = reinterpret_cast(loader.load("glBlendFunciEXT")); flextGL.ColorMaskiEXT = reinterpret_cast(loader.load("glColorMaskiEXT")); flextGL.DisableiEXT = reinterpret_cast(loader.load("glDisableiEXT")); flextGL.EnableiEXT = reinterpret_cast(loader.load("glEnableiEXT")); flextGL.IsEnablediEXT = reinterpret_cast(loader.load("glIsEnablediEXT")); /* GL_EXT_draw_elements_base_vertex */ flextGL.DrawElementsBaseVertexEXT = reinterpret_cast(loader.load("glDrawElementsBaseVertexEXT")); flextGL.MultiDrawElementsBaseVertexEXT = reinterpret_cast(loader.load("glMultiDrawElementsBaseVertexEXT")); /* GL_EXT_instanced_arrays */ flextGL.DrawArraysInstancedEXT = reinterpret_cast(loader.load("glDrawArraysInstancedEXT")); flextGL.DrawElementsInstancedEXT = reinterpret_cast(loader.load("glDrawElementsInstancedEXT")); flextGL.VertexAttribDivisorEXT = reinterpret_cast(loader.load("glVertexAttribDivisorEXT")); /* GL_EXT_map_buffer_range */ flextGL.FlushMappedBufferRangeEXT = reinterpret_cast(loader.load("glFlushMappedBufferRangeEXT")); flextGL.MapBufferRangeEXT = reinterpret_cast(loader.load("glMapBufferRangeEXT")); /* GL_EXT_multi_draw_arrays */ flextGL.MultiDrawArraysEXT = reinterpret_cast(loader.load("glMultiDrawArraysEXT")); flextGL.MultiDrawElementsEXT = reinterpret_cast(loader.load("glMultiDrawElementsEXT")); /* GL_EXT_multisampled_render_to_texture */ flextGL.FramebufferTexture2DMultisampleEXT = reinterpret_cast(loader.load("glFramebufferTexture2DMultisampleEXT")); flextGL.RenderbufferStorageMultisampleEXT = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleEXT")); /* GL_EXT_occlusion_query_boolean */ flextGL.BeginQueryEXT = reinterpret_cast(loader.load("glBeginQueryEXT")); flextGL.DeleteQueriesEXT = reinterpret_cast(loader.load("glDeleteQueriesEXT")); flextGL.EndQueryEXT = reinterpret_cast(loader.load("glEndQueryEXT")); flextGL.GenQueriesEXT = reinterpret_cast(loader.load("glGenQueriesEXT")); flextGL.GetQueryObjectuivEXT = reinterpret_cast(loader.load("glGetQueryObjectuivEXT")); flextGL.GetQueryivEXT = reinterpret_cast(loader.load("glGetQueryivEXT")); flextGL.IsQueryEXT = reinterpret_cast(loader.load("glIsQueryEXT")); /* GL_EXT_polygon_offset_clamp */ flextGL.PolygonOffsetClampEXT = reinterpret_cast(loader.load("glPolygonOffsetClampEXT")); /* GL_EXT_robustness */ flextGL.GetGraphicsResetStatusEXT = reinterpret_cast(loader.load("glGetGraphicsResetStatusEXT")); flextGL.GetnUniformfvEXT = reinterpret_cast(loader.load("glGetnUniformfvEXT")); flextGL.GetnUniformivEXT = reinterpret_cast(loader.load("glGetnUniformivEXT")); flextGL.ReadnPixelsEXT = reinterpret_cast(loader.load("glReadnPixelsEXT")); /* GL_EXT_separate_shader_objects */ flextGL.ActiveShaderProgramEXT = reinterpret_cast(loader.load("glActiveShaderProgramEXT")); flextGL.BindProgramPipelineEXT = reinterpret_cast(loader.load("glBindProgramPipelineEXT")); flextGL.CreateShaderProgramvEXT = reinterpret_cast(loader.load("glCreateShaderProgramvEXT")); flextGL.DeleteProgramPipelinesEXT = reinterpret_cast(loader.load("glDeleteProgramPipelinesEXT")); flextGL.GenProgramPipelinesEXT = reinterpret_cast(loader.load("glGenProgramPipelinesEXT")); flextGL.GetProgramPipelineInfoLogEXT = reinterpret_cast(loader.load("glGetProgramPipelineInfoLogEXT")); flextGL.GetProgramPipelineivEXT = reinterpret_cast(loader.load("glGetProgramPipelineivEXT")); flextGL.IsProgramPipelineEXT = reinterpret_cast(loader.load("glIsProgramPipelineEXT")); flextGL.ProgramParameteriEXT = reinterpret_cast(loader.load("glProgramParameteriEXT")); flextGL.ProgramUniform1fEXT = reinterpret_cast(loader.load("glProgramUniform1fEXT")); flextGL.ProgramUniform1fvEXT = reinterpret_cast(loader.load("glProgramUniform1fvEXT")); flextGL.ProgramUniform1iEXT = reinterpret_cast(loader.load("glProgramUniform1iEXT")); flextGL.ProgramUniform1ivEXT = reinterpret_cast(loader.load("glProgramUniform1ivEXT")); flextGL.ProgramUniform2fEXT = reinterpret_cast(loader.load("glProgramUniform2fEXT")); flextGL.ProgramUniform2fvEXT = reinterpret_cast(loader.load("glProgramUniform2fvEXT")); flextGL.ProgramUniform2iEXT = reinterpret_cast(loader.load("glProgramUniform2iEXT")); flextGL.ProgramUniform2ivEXT = reinterpret_cast(loader.load("glProgramUniform2ivEXT")); flextGL.ProgramUniform3fEXT = reinterpret_cast(loader.load("glProgramUniform3fEXT")); flextGL.ProgramUniform3fvEXT = reinterpret_cast(loader.load("glProgramUniform3fvEXT")); flextGL.ProgramUniform3iEXT = reinterpret_cast(loader.load("glProgramUniform3iEXT")); flextGL.ProgramUniform3ivEXT = reinterpret_cast(loader.load("glProgramUniform3ivEXT")); flextGL.ProgramUniform4fEXT = reinterpret_cast(loader.load("glProgramUniform4fEXT")); flextGL.ProgramUniform4fvEXT = reinterpret_cast(loader.load("glProgramUniform4fvEXT")); flextGL.ProgramUniform4iEXT = reinterpret_cast(loader.load("glProgramUniform4iEXT")); flextGL.ProgramUniform4ivEXT = reinterpret_cast(loader.load("glProgramUniform4ivEXT")); flextGL.ProgramUniformMatrix2fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix2fvEXT")); flextGL.ProgramUniformMatrix3fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix3fvEXT")); flextGL.ProgramUniformMatrix4fvEXT = reinterpret_cast(loader.load("glProgramUniformMatrix4fvEXT")); flextGL.UseProgramStagesEXT = reinterpret_cast(loader.load("glUseProgramStagesEXT")); flextGL.ValidateProgramPipelineEXT = reinterpret_cast(loader.load("glValidateProgramPipelineEXT")); /* GL_EXT_texture_border_clamp */ flextGL.GetSamplerParameterIivEXT = reinterpret_cast(loader.load("glGetSamplerParameterIivEXT")); flextGL.GetSamplerParameterIuivEXT = reinterpret_cast(loader.load("glGetSamplerParameterIuivEXT")); flextGL.GetTexParameterIivEXT = reinterpret_cast(loader.load("glGetTexParameterIivEXT")); flextGL.GetTexParameterIuivEXT = reinterpret_cast(loader.load("glGetTexParameterIuivEXT")); flextGL.SamplerParameterIivEXT = reinterpret_cast(loader.load("glSamplerParameterIivEXT")); flextGL.SamplerParameterIuivEXT = reinterpret_cast(loader.load("glSamplerParameterIuivEXT")); flextGL.TexParameterIivEXT = reinterpret_cast(loader.load("glTexParameterIivEXT")); flextGL.TexParameterIuivEXT = reinterpret_cast(loader.load("glTexParameterIuivEXT")); /* GL_EXT_texture_storage */ flextGL.TexStorage2DEXT = reinterpret_cast(loader.load("glTexStorage2DEXT")); flextGL.TexStorage3DEXT = reinterpret_cast(loader.load("glTexStorage3DEXT")); /* GL_KHR_blend_equation_advanced */ flextGL.BlendBarrierKHR = reinterpret_cast(loader.load("glBlendBarrierKHR")); /* GL_KHR_debug */ flextGL.DebugMessageCallbackKHR = reinterpret_cast(loader.load("glDebugMessageCallbackKHR")); flextGL.DebugMessageControlKHR = reinterpret_cast(loader.load("glDebugMessageControlKHR")); flextGL.DebugMessageInsertKHR = reinterpret_cast(loader.load("glDebugMessageInsertKHR")); flextGL.GetDebugMessageLogKHR = reinterpret_cast(loader.load("glGetDebugMessageLogKHR")); flextGL.GetObjectLabelKHR = reinterpret_cast(loader.load("glGetObjectLabelKHR")); flextGL.GetObjectPtrLabelKHR = reinterpret_cast(loader.load("glGetObjectPtrLabelKHR")); flextGL.GetPointervKHR = reinterpret_cast(loader.load("glGetPointervKHR")); flextGL.ObjectLabelKHR = reinterpret_cast(loader.load("glObjectLabelKHR")); flextGL.ObjectPtrLabelKHR = reinterpret_cast(loader.load("glObjectPtrLabelKHR")); flextGL.PopDebugGroupKHR = reinterpret_cast(loader.load("glPopDebugGroupKHR")); flextGL.PushDebugGroupKHR = reinterpret_cast(loader.load("glPushDebugGroupKHR")); /* GL_KHR_parallel_shader_compile */ flextGL.MaxShaderCompilerThreadsKHR = reinterpret_cast(loader.load("glMaxShaderCompilerThreadsKHR")); /* GL_KHR_robustness */ flextGL.GetGraphicsResetStatusKHR = reinterpret_cast(loader.load("glGetGraphicsResetStatusKHR")); flextGL.GetnUniformfvKHR = reinterpret_cast(loader.load("glGetnUniformfvKHR")); flextGL.GetnUniformivKHR = reinterpret_cast(loader.load("glGetnUniformivKHR")); flextGL.GetnUniformuivKHR = reinterpret_cast(loader.load("glGetnUniformuivKHR")); flextGL.ReadnPixelsKHR = reinterpret_cast(loader.load("glReadnPixelsKHR")); /* GL_NV_draw_buffers */ flextGL.DrawBuffersNV = reinterpret_cast(loader.load("glDrawBuffersNV")); /* GL_NV_draw_instanced */ flextGL.DrawArraysInstancedNV = reinterpret_cast(loader.load("glDrawArraysInstancedNV")); flextGL.DrawElementsInstancedNV = reinterpret_cast(loader.load("glDrawElementsInstancedNV")); /* GL_NV_framebuffer_blit */ flextGL.BlitFramebufferNV = reinterpret_cast(loader.load("glBlitFramebufferNV")); /* GL_NV_framebuffer_multisample */ flextGL.RenderbufferStorageMultisampleNV = reinterpret_cast(loader.load("glRenderbufferStorageMultisampleNV")); /* GL_NV_instanced_arrays */ flextGL.VertexAttribDivisorNV = reinterpret_cast(loader.load("glVertexAttribDivisorNV")); /* GL_NV_polygon_mode */ flextGL.PolygonModeNV = reinterpret_cast(loader.load("glPolygonModeNV")); /* GL_NV_read_buffer */ flextGL.ReadBufferNV = reinterpret_cast(loader.load("glReadBufferNV")); /* GL_NV_sample_locations */ flextGL.FramebufferSampleLocationsfvNV = reinterpret_cast(loader.load("glFramebufferSampleLocationsfvNV")); flextGL.NamedFramebufferSampleLocationsfvNV = reinterpret_cast(loader.load("glNamedFramebufferSampleLocationsfvNV")); flextGL.ResolveDepthValuesNV = reinterpret_cast(loader.load("glResolveDepthValuesNV")); /* GL_OES_draw_elements_base_vertex */ flextGL.DrawElementsBaseVertexOES = reinterpret_cast(loader.load("glDrawElementsBaseVertexOES")); /* GL_OES_mapbuffer */ flextGL.GetBufferPointervOES = reinterpret_cast(loader.load("glGetBufferPointervOES")); flextGL.MapBufferOES = reinterpret_cast(loader.load("glMapBufferOES")); flextGL.UnmapBufferOES = reinterpret_cast(loader.load("glUnmapBufferOES")); /* GL_OES_texture_3D */ flextGL.CompressedTexImage3DOES = reinterpret_cast(loader.load("glCompressedTexImage3DOES")); flextGL.CompressedTexSubImage3DOES = reinterpret_cast(loader.load("glCompressedTexSubImage3DOES")); flextGL.CopyTexSubImage3DOES = reinterpret_cast(loader.load("glCopyTexSubImage3DOES")); flextGL.FramebufferTexture3DOES = reinterpret_cast(loader.load("glFramebufferTexture3DOES")); flextGL.TexImage3DOES = reinterpret_cast(loader.load("glTexImage3DOES")); flextGL.TexSubImage3DOES = reinterpret_cast(loader.load("glTexSubImage3DOES")); /* GL_OES_vertex_array_object */ flextGL.BindVertexArrayOES = reinterpret_cast(loader.load("glBindVertexArrayOES")); flextGL.DeleteVertexArraysOES = reinterpret_cast(loader.load("glDeleteVertexArraysOES")); flextGL.GenVertexArraysOES = reinterpret_cast(loader.load("glGenVertexArraysOES")); flextGL.IsVertexArrayOES = reinterpret_cast(loader.load("glIsVertexArrayOES")); }