├── .gitignore ├── .gitmodules ├── CMakeLists.txt ├── assets └── shaders │ ├── triangle.frag │ └── triangle.vert ├── external └── glad │ ├── CMakeLists.txt │ ├── include │ ├── KHR │ │ └── khrplatform.h │ └── glad │ │ └── glad.h │ └── src │ └── glad.c ├── license.md ├── readme.md └── src ├── Main.cpp ├── Triangle.cpp ├── Triangle.h └── Utils.h /.gitignore: -------------------------------------------------------------------------------- 1 | # CMake 2 | CMakeCache.txt 3 | CMakeFiles 4 | CMakeScripts 5 | Testing 6 | Makefile 7 | cmake_install.cmake 8 | install_manifest.txt 9 | compile_commands.json 10 | CTestTestfile.cmake 11 | *_autogen 12 | 13 | 14 | ## Visual Studio 15 | # User-specific files 16 | *.sln 17 | *.vcxproj 18 | *.filters 19 | *.suo 20 | *.user 21 | *.userosscache 22 | *.sln.docstates 23 | .vscode 24 | 25 | # User-specific files (MonoDevelop/Xamarin Studio) 26 | *.userprefs 27 | 28 | # Build results 29 | [Dd]ebug/ 30 | [Dd]ebugPublic/ 31 | [Rr]elease/ 32 | [Rr]eleases/ 33 | x64/ 34 | x86/ 35 | bld/ 36 | [Bb]in/ 37 | [Oo]bj/ 38 | [Ll]og/ 39 | 40 | # Visual Studio 2015 cache/options directory 41 | .vs/ 42 | # Uncomment if you have tasks that create the project's static files in wwwroot 43 | #wwwroot/ 44 | 45 | # MSTest test Results 46 | [Tt]est[Rr]esult*/ 47 | [Bb]uild[Ll]og.* 48 | 49 | # NUNIT 50 | *.VisualState.xml 51 | TestResult.xml 52 | 53 | # Build Results of an ATL Project 54 | [Dd]ebugPS/ 55 | [Rr]eleasePS/ 56 | dlldata.c 57 | 58 | # Benchmark Results 59 | BenchmarkDotNet.Artifacts/ 60 | 61 | # .NET Core 62 | project.lock.json 63 | project.fragment.lock.json 64 | artifacts/ 65 | **/Properties/launchSettings.json 66 | 67 | *_i.c 68 | *_p.c 69 | *_i.h 70 | *.ilk 71 | *.meta 72 | *.obj 73 | *.pch 74 | *.pdb 75 | *.pgc 76 | *.pgd 77 | *.rsp 78 | *.sbr 79 | *.tlb 80 | *.tli 81 | *.tlh 82 | *.tmp 83 | *.tmp_proj 84 | *.log 85 | *.vspscc 86 | *.vssscc 87 | .builds 88 | *.pidb 89 | *.svclog 90 | *.scc 91 | 92 | # Chutzpah Test files 93 | _Chutzpah* 94 | 95 | # Visual C++ cache files 96 | ipch/ 97 | *.aps 98 | *.ncb 99 | *.opendb 100 | *.opensdf 101 | *.sdf 102 | *.cachefile 103 | *.VC.db 104 | *.VC.VC.opendb 105 | 106 | # Visual Studio profiler 107 | *.psess 108 | *.vsp 109 | *.vspx 110 | *.sap 111 | 112 | # TFS 2012 Local Workspace 113 | $tf/ 114 | 115 | # Guidance Automation Toolkit 116 | *.gpState 117 | 118 | # ReSharper is a .NET coding add-in 119 | _ReSharper*/ 120 | *.[Rr]e[Ss]harper 121 | *.DotSettings.user 122 | 123 | # JustCode is a .NET coding add-in 124 | .JustCode 125 | 126 | # TeamCity is a build add-in 127 | _TeamCity* 128 | 129 | # DotCover is a Code Coverage Tool 130 | *.dotCover 131 | 132 | # Visual Studio code coverage results 133 | *.coverage 134 | *.coveragexml 135 | 136 | # NCrunch 137 | _NCrunch_* 138 | .*crunch*.local.xml 139 | nCrunchTemp_* 140 | 141 | # MightyMoose 142 | *.mm.* 143 | AutoTest.Net/ 144 | 145 | # Web workbench (sass) 146 | .sass-cache/ 147 | 148 | # Installshield output folder 149 | [Ee]xpress/ 150 | 151 | # DocProject is a documentation generator add-in 152 | DocProject/buildhelp/ 153 | DocProject/Help/*.HxT 154 | DocProject/Help/*.HxC 155 | DocProject/Help/*.hhc 156 | DocProject/Help/*.hhk 157 | DocProject/Help/*.hhp 158 | DocProject/Help/Html2 159 | DocProject/Help/html 160 | 161 | # Click-Once directory 162 | publish/ 163 | 164 | # Publish Web Output 165 | *.[Pp]ublish.xml 166 | *.azurePubxml 167 | # Note: Comment the next line if you want to checkin your web deploy settings, 168 | # but database connection strings (with potential passwords) will be unencrypted 169 | *.pubxml 170 | *.publishproj 171 | 172 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 173 | # checkin your Azure Web App publish settings, but sensitive information contained 174 | # in these scripts will be unencrypted 175 | PublishScripts/ 176 | 177 | # NuGet Packages 178 | *.nupkg 179 | # The packages folder can be ignored because of Package Restore 180 | **/packages/* 181 | # except build/, which is used as an MSBuild target. 182 | !**/packages/build/ 183 | # Uncomment if necessary however generally it will be regenerated when needed 184 | #!**/packages/repositories.config 185 | # NuGet v3's project.json files produces more ignorable files 186 | *.nuget.props 187 | *.nuget.targets 188 | 189 | # Microsoft Azure Build Output 190 | csx/ 191 | *.build.csdef 192 | 193 | # Microsoft Azure Emulator 194 | ecf/ 195 | rcf/ 196 | 197 | # Windows Store app package directories and files 198 | AppPackages/ 199 | BundleArtifacts/ 200 | Package.StoreAssociation.xml 201 | _pkginfo.txt 202 | *.appx 203 | 204 | # Visual Studio cache files 205 | # files ending in .cache can be ignored 206 | *.[Cc]ache 207 | # but keep track of directories ending in .cache 208 | !*.[Cc]ache/ 209 | 210 | # Others 211 | ClientBin/ 212 | ~$* 213 | *~ 214 | *.dbmdl 215 | *.dbproj.schemaview 216 | *.jfm 217 | *.pfx 218 | *.publishsettings 219 | orleans.codegen.cs 220 | 221 | # Since there are multiple workflows, uncomment next line to ignore bower_components 222 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 223 | #bower_components/ 224 | 225 | # RIA/Silverlight projects 226 | Generated_Code/ 227 | 228 | # Backup & report files from converting an old project file 229 | # to a newer Visual Studio version. Backup files are not needed, 230 | # because we have git ;-) 231 | _UpgradeReport_Files/ 232 | Backup*/ 233 | UpgradeLog*.XML 234 | UpgradeLog*.htm 235 | 236 | # SQL Server files 237 | *.mdf 238 | *.ldf 239 | *.ndf 240 | 241 | # Business Intelligence projects 242 | *.rdl.data 243 | *.bim.layout 244 | *.bim_*.settings 245 | 246 | # Microsoft Fakes 247 | FakesAssemblies/ 248 | 249 | # GhostDoc plugin setting file 250 | *.GhostDoc.xml 251 | 252 | # Node.js Tools for Visual Studio 253 | .ntvs_analysis.dat 254 | node_modules/ 255 | 256 | # Typescript v1 declaration files 257 | typings/ 258 | 259 | # Visual Studio 6 build log 260 | *.plg 261 | 262 | # Visual Studio 6 workspace options file 263 | *.opt 264 | 265 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 266 | *.vbw 267 | 268 | # Visual Studio LightSwitch build output 269 | **/*.HTMLClient/GeneratedArtifacts 270 | **/*.DesktopClient/GeneratedArtifacts 271 | **/*.DesktopClient/ModelManifest.xml 272 | **/*.Server/GeneratedArtifacts 273 | **/*.Server/ModelManifest.xml 274 | _Pvt_Extensions 275 | 276 | # Paket dependency manager 277 | .paket/paket.exe 278 | paket-files/ 279 | 280 | # FAKE - F# Make 281 | .fake/ 282 | 283 | # JetBrains Rider 284 | .idea/ 285 | *.sln.iml 286 | 287 | # CodeRush 288 | .cr/ 289 | 290 | # Python Tools for Visual Studio (PTVS) 291 | __pycache__/ 292 | *.pyc 293 | 294 | # Cake - Uncomment if you are using it 295 | # tools/** 296 | # !tools/packages.config 297 | 298 | # Tabs Studio 299 | *.tss 300 | 301 | # Telerik's JustMock configuration file 302 | *.jmconfig 303 | 304 | # BizTalk build output 305 | *.btp.cs 306 | *.btm.cs 307 | *.odx.cs 308 | *.xsd.cs 309 | 310 | # Xcode 311 | # 312 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 313 | 314 | ## Build generated 315 | build/ 316 | DerivedData/ 317 | wasm/ 318 | 319 | ## Various settings 320 | *.pbxuser 321 | !default.pbxuser 322 | *.mode1v3 323 | !default.mode1v3 324 | *.mode2v3 325 | !default.mode2v3 326 | *.perspectivev3 327 | !default.perspectivev3 328 | xcuserdata/ 329 | 330 | ## Other 331 | *.moved-aside 332 | *.xccheckout 333 | *.xcscmblueprint -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "external/crosswindow"] 2 | path = external/crosswindow 3 | url = https://github.com/alaingalvan/crosswindow 4 | [submodule "external/crosswindow-graphics"] 5 | path = external/crosswindow-graphics 6 | url = https://github.com/alaingalvan/crosswindow-graphics 7 | [submodule "external/glm"] 8 | path = external/glm 9 | url = https://github.com/g-truc/glm 10 | [submodule "external/opengl-registry"] 11 | path = external/opengl-registry 12 | url = https://github.com/KhronosGroup/opengl-registry.git 13 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # Project Info 2 | 3 | cmake_minimum_required(VERSION 3.6 FATAL_ERROR) 4 | cmake_policy(VERSION 3.6) 5 | project(OpenGLSeed 6 | VERSION 1.0.0.0 7 | LANGUAGES C CXX 8 | ) 9 | 10 | # ============================================================= 11 | 12 | # CMake Settings 13 | 14 | set_property(GLOBAL PROPERTY USE_FOLDERS ON) 15 | set(CMAKE_SUPPRESS_REGENERATION true) 16 | set(DCMAKE_GENERATOR_PLATFORM "x64") 17 | set(CMAKE_CXX_STANDARD 14) 18 | set(CMAKE_CXX_STANDARD_REQUIRED ON) 19 | set(CMAKE_CXX_EXTENSIONS OFF) 20 | SET(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) 21 | SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin) 22 | SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin) 23 | SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin) 24 | SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin) 25 | SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_BINARY_DIR}/bin) 26 | SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${CMAKE_BINARY_DIR}/bin) 27 | if(NOT CMAKE_DEBUG_POSTFIX) 28 | set(CMAKE_DEBUG_POSTFIX d) 29 | endif() 30 | 31 | # ============================================================= 32 | 33 | # Options 34 | 35 | set(XGFX_API OPENGL CACHE STRING "Which graphics API to use, defaults to AUTO, can be NOOP, VULKAN, OPENGL, DIRECTX12, or METAL.") 36 | set_property( 37 | CACHE 38 | XGFX_API PROPERTY 39 | STRINGS NOOP VULKAN OPENGL DIRECTX12 METAL 40 | ) 41 | 42 | # ============================================================= 43 | 44 | # Dependencies 45 | 46 | # CrossWindow 47 | message(STATUS "Installing crosswindow via submodule") 48 | add_subdirectory(external/crosswindow) 49 | set_property(TARGET CrossWindow PROPERTY FOLDER "Dependencies") 50 | 51 | # CrossWindow-Graphics 52 | message(STATUS "Installing crosswindow-graphics via submodule") 53 | add_subdirectory(external/crosswindow-graphics) 54 | 55 | # Cross Graphics Dependencies 56 | message(STATUS "Installing glad via submodule") 57 | add_subdirectory(external/glad) 58 | target_include_directories( 59 | Glad 60 | PUBLIC external/opengl-registry/api 61 | ) 62 | set(XGFX_LIBRARY Glad) 63 | set_property(TARGET Glad PROPERTY FOLDER "Dependencies") 64 | 65 | # GLM 66 | message(STATUS "Installing glm via submodule") 67 | set(BUILD_STATIC_LIBS ON) 68 | add_subdirectory(external/glm/glm) 69 | set_property(TARGET glm_static PROPERTY FOLDER "Dependencies") 70 | 71 | # ============================================================= 72 | 73 | # Cross Graphics Dependencies 74 | 75 | find_library(XGFX_OS_LIBRARY OpenGL) 76 | 77 | # ============================================================= 78 | 79 | # Sources 80 | 81 | file(GLOB_RECURSE FILE_SOURCES RELATIVE 82 | ${CMAKE_CURRENT_SOURCE_DIR} 83 | ${CMAKE_CURRENT_SOURCE_DIR}/src/*.mm 84 | ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp 85 | ${CMAKE_CURRENT_SOURCE_DIR}/src/*.h 86 | ) 87 | 88 | # Solution Filters 89 | foreach(source IN LISTS FILE_SOURCES) 90 | get_filename_component(source_path "${source}" PATH) 91 | string(REPLACE "/" "\\" source_path_msvc "${source_path}") 92 | string(REPLACE "src" "" source_path_final "${source_path_msvc}") 93 | source_group("${source_path_final}" FILES "${source}") 94 | endforeach() 95 | 96 | # ============================================================= 97 | 98 | # Finalize App 99 | 100 | xwin_add_executable( 101 | ${PROJECT_NAME} 102 | "${FILE_SOURCES}" 103 | ) 104 | 105 | # ============================================================= 106 | 107 | # Finish Dependencies 108 | 109 | target_link_libraries( 110 | ${PROJECT_NAME} 111 | ${XGFX_LIBRARY} 112 | CrossWindowGraphics 113 | CrossWindow 114 | glm_static 115 | ) 116 | 117 | if(XGFX_OS_LIBRARY) 118 | message(STATUS "Installing OpenGL library") 119 | target_link_libraries( 120 | ${PROJECT_NAME} 121 | ${XGFX_OS_LIBRARY} 122 | ) 123 | endif() 124 | 125 | target_include_directories( 126 | ${PROJECT_NAME} 127 | PUBLIC external/glm 128 | ) 129 | 130 | add_dependencies( 131 | ${PROJECT_NAME} 132 | CrossWindowGraphics 133 | CrossWindow 134 | glm_static 135 | 136 | ) 137 | 138 | target_compile_definitions( 139 | ${PROJECT_NAME} 140 | PUBLIC XGFX_${XGFX_API}=1 141 | ) 142 | 143 | # ============================================================= 144 | 145 | # Finish Settings 146 | 147 | # Change output dir to bin 148 | set_target_properties(${PROJECT_NAME} PROPERTIES 149 | RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin 150 | ) 151 | # Change working directory to top dir to access `assets/shaders/` folder 152 | if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC") 153 | set_property(TARGET ${PROJECT_NAME} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/..) 154 | set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT_NAME}) 155 | endif() -------------------------------------------------------------------------------- /assets/shaders/triangle.frag: -------------------------------------------------------------------------------- 1 | #version 410 2 | 3 | precision mediump float; 4 | precision highp int; 5 | 6 | layout(location = 0) in highp vec3 vColor; 7 | 8 | layout(location = 0) out highp vec4 outFragColor; 9 | 10 | 11 | void main() 12 | { 13 | outFragColor = vec4(vColor, 1.0); 14 | } 15 | -------------------------------------------------------------------------------- /assets/shaders/triangle.vert: -------------------------------------------------------------------------------- 1 | #version 410 2 | 3 | layout(location = 0) in vec3 inPosition; 4 | layout(location = 1) in vec3 inColor; 5 | 6 | layout(location = 0) out vec3 vColor; 7 | 8 | void main() 9 | { 10 | vColor = inColor; 11 | gl_Position = vec4(inPosition, 1.0); 12 | } -------------------------------------------------------------------------------- /external/glad/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.6 FATAL_ERROR) 2 | cmake_policy(VERSION 3.6) 3 | project(Glad 4 | VERSION 1.0.0.0 5 | LANGUAGES C CXX 6 | ) 7 | 8 | set( 9 | GLAD_SOURCES 10 | ${CMAKE_CURRENT_SOURCE_DIR}/src/glad.c 11 | ) 12 | 13 | add_library( 14 | ${PROJECT_NAME} 15 | "${GLAD_SOURCES}" 16 | ) 17 | 18 | target_include_directories( 19 | Glad 20 | PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include 21 | ) -------------------------------------------------------------------------------- /external/glad/include/KHR/khrplatform.h: -------------------------------------------------------------------------------- 1 | #ifndef __khrplatform_h_ 2 | #define __khrplatform_h_ 3 | 4 | /* 5 | ** Copyright (c) 2008-2018 The Khronos Group Inc. 6 | ** 7 | ** Permission is hereby granted, free of charge, to any person obtaining a 8 | ** copy of this software and/or associated documentation files (the 9 | ** "Materials"), to deal in the Materials without restriction, including 10 | ** without limitation the rights to use, copy, modify, merge, publish, 11 | ** distribute, sublicense, and/or sell copies of the Materials, and to 12 | ** permit persons to whom the Materials are furnished to do so, subject to 13 | ** the following conditions: 14 | ** 15 | ** The above copyright notice and this permission notice shall be included 16 | ** in all copies or substantial portions of the Materials. 17 | ** 18 | ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 19 | ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 20 | ** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 21 | ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 22 | ** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 23 | ** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 24 | ** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 25 | */ 26 | 27 | /* Khronos platform-specific types and definitions. 28 | * 29 | * The master copy of khrplatform.h is maintained in the Khronos EGL 30 | * Registry repository at https://github.com/KhronosGroup/EGL-Registry 31 | * The last semantic modification to khrplatform.h was at commit ID: 32 | * 67a3e0864c2d75ea5287b9f3d2eb74a745936692 33 | * 34 | * Adopters may modify this file to suit their platform. Adopters are 35 | * encouraged to submit platform specific modifications to the Khronos 36 | * group so that they can be included in future versions of this file. 37 | * Please submit changes by filing pull requests or issues on 38 | * the EGL Registry repository linked above. 39 | * 40 | * 41 | * See the Implementer's Guidelines for information about where this file 42 | * should be located on your system and for more details of its use: 43 | * http://www.khronos.org/registry/implementers_guide.pdf 44 | * 45 | * This file should be included as 46 | * #include 47 | * by Khronos client API header files that use its types and defines. 48 | * 49 | * The types in khrplatform.h should only be used to define API-specific types. 50 | * 51 | * Types defined in khrplatform.h: 52 | * khronos_int8_t signed 8 bit 53 | * khronos_uint8_t unsigned 8 bit 54 | * khronos_int16_t signed 16 bit 55 | * khronos_uint16_t unsigned 16 bit 56 | * khronos_int32_t signed 32 bit 57 | * khronos_uint32_t unsigned 32 bit 58 | * khronos_int64_t signed 64 bit 59 | * khronos_uint64_t unsigned 64 bit 60 | * khronos_intptr_t signed same number of bits as a pointer 61 | * khronos_uintptr_t unsigned same number of bits as a pointer 62 | * khronos_ssize_t signed size 63 | * khronos_usize_t unsigned size 64 | * khronos_float_t signed 32 bit floating point 65 | * khronos_time_ns_t unsigned 64 bit time in nanoseconds 66 | * khronos_utime_nanoseconds_t unsigned time interval or absolute time in 67 | * nanoseconds 68 | * khronos_stime_nanoseconds_t signed time interval in nanoseconds 69 | * khronos_boolean_enum_t enumerated boolean type. This should 70 | * only be used as a base type when a client API's boolean type is 71 | * an enum. Client APIs which use an integer or other type for 72 | * booleans cannot use this as the base type for their boolean. 73 | * 74 | * Tokens defined in khrplatform.h: 75 | * 76 | * KHRONOS_FALSE, KHRONOS_TRUE Enumerated boolean false/true values. 77 | * 78 | * KHRONOS_SUPPORT_INT64 is 1 if 64 bit integers are supported; otherwise 0. 79 | * KHRONOS_SUPPORT_FLOAT is 1 if floats are supported; otherwise 0. 80 | * 81 | * Calling convention macros defined in this file: 82 | * KHRONOS_APICALL 83 | * KHRONOS_APIENTRY 84 | * KHRONOS_APIATTRIBUTES 85 | * 86 | * These may be used in function prototypes as: 87 | * 88 | * KHRONOS_APICALL void KHRONOS_APIENTRY funcname( 89 | * int arg1, 90 | * int arg2) KHRONOS_APIATTRIBUTES; 91 | */ 92 | 93 | /*------------------------------------------------------------------------- 94 | * Definition of KHRONOS_APICALL 95 | *------------------------------------------------------------------------- 96 | * This precedes the return type of the function in the function prototype. 97 | */ 98 | #if defined(_WIN32) && !defined(__SCITECH_SNAP__) 99 | # define KHRONOS_APICALL __declspec(dllimport) 100 | #elif defined (__SYMBIAN32__) 101 | # define KHRONOS_APICALL IMPORT_C 102 | #elif defined(__ANDROID__) 103 | # define KHRONOS_APICALL __attribute__((visibility("default"))) 104 | #else 105 | # define KHRONOS_APICALL 106 | #endif 107 | 108 | /*------------------------------------------------------------------------- 109 | * Definition of KHRONOS_APIENTRY 110 | *------------------------------------------------------------------------- 111 | * This follows the return type of the function and precedes the function 112 | * name in the function prototype. 113 | */ 114 | #if defined(_WIN32) && !defined(_WIN32_WCE) && !defined(__SCITECH_SNAP__) 115 | /* Win32 but not WinCE */ 116 | # define KHRONOS_APIENTRY __stdcall 117 | #else 118 | # define KHRONOS_APIENTRY 119 | #endif 120 | 121 | /*------------------------------------------------------------------------- 122 | * Definition of KHRONOS_APIATTRIBUTES 123 | *------------------------------------------------------------------------- 124 | * This follows the closing parenthesis of the function prototype arguments. 125 | */ 126 | #if defined (__ARMCC_2__) 127 | #define KHRONOS_APIATTRIBUTES __softfp 128 | #else 129 | #define KHRONOS_APIATTRIBUTES 130 | #endif 131 | 132 | /*------------------------------------------------------------------------- 133 | * basic type definitions 134 | *-----------------------------------------------------------------------*/ 135 | #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || defined(__GNUC__) || defined(__SCO__) || defined(__USLC__) 136 | 137 | 138 | /* 139 | * Using 140 | */ 141 | #include 142 | typedef int32_t khronos_int32_t; 143 | typedef uint32_t khronos_uint32_t; 144 | typedef int64_t khronos_int64_t; 145 | typedef uint64_t khronos_uint64_t; 146 | #define KHRONOS_SUPPORT_INT64 1 147 | #define KHRONOS_SUPPORT_FLOAT 1 148 | 149 | #elif defined(__VMS ) || defined(__sgi) 150 | 151 | /* 152 | * Using 153 | */ 154 | #include 155 | typedef int32_t khronos_int32_t; 156 | typedef uint32_t khronos_uint32_t; 157 | typedef int64_t khronos_int64_t; 158 | typedef uint64_t khronos_uint64_t; 159 | #define KHRONOS_SUPPORT_INT64 1 160 | #define KHRONOS_SUPPORT_FLOAT 1 161 | 162 | #elif defined(_WIN32) && !defined(__SCITECH_SNAP__) 163 | 164 | /* 165 | * Win32 166 | */ 167 | typedef __int32 khronos_int32_t; 168 | typedef unsigned __int32 khronos_uint32_t; 169 | typedef __int64 khronos_int64_t; 170 | typedef unsigned __int64 khronos_uint64_t; 171 | #define KHRONOS_SUPPORT_INT64 1 172 | #define KHRONOS_SUPPORT_FLOAT 1 173 | 174 | #elif defined(__sun__) || defined(__digital__) 175 | 176 | /* 177 | * Sun or Digital 178 | */ 179 | typedef int khronos_int32_t; 180 | typedef unsigned int khronos_uint32_t; 181 | #if defined(__arch64__) || defined(_LP64) 182 | typedef long int khronos_int64_t; 183 | typedef unsigned long int khronos_uint64_t; 184 | #else 185 | typedef long long int khronos_int64_t; 186 | typedef unsigned long long int khronos_uint64_t; 187 | #endif /* __arch64__ */ 188 | #define KHRONOS_SUPPORT_INT64 1 189 | #define KHRONOS_SUPPORT_FLOAT 1 190 | 191 | #elif 0 192 | 193 | /* 194 | * Hypothetical platform with no float or int64 support 195 | */ 196 | typedef int khronos_int32_t; 197 | typedef unsigned int khronos_uint32_t; 198 | #define KHRONOS_SUPPORT_INT64 0 199 | #define KHRONOS_SUPPORT_FLOAT 0 200 | 201 | #else 202 | 203 | /* 204 | * Generic fallback 205 | */ 206 | #include 207 | typedef int32_t khronos_int32_t; 208 | typedef uint32_t khronos_uint32_t; 209 | typedef int64_t khronos_int64_t; 210 | typedef uint64_t khronos_uint64_t; 211 | #define KHRONOS_SUPPORT_INT64 1 212 | #define KHRONOS_SUPPORT_FLOAT 1 213 | 214 | #endif 215 | 216 | 217 | /* 218 | * Types that are (so far) the same on all platforms 219 | */ 220 | typedef signed char khronos_int8_t; 221 | typedef unsigned char khronos_uint8_t; 222 | typedef signed short int khronos_int16_t; 223 | typedef unsigned short int khronos_uint16_t; 224 | 225 | /* 226 | * Types that differ between LLP64 and LP64 architectures - in LLP64, 227 | * pointers are 64 bits, but 'long' is still 32 bits. Win64 appears 228 | * to be the only LLP64 architecture in current use. 229 | */ 230 | #ifdef _WIN64 231 | typedef signed long long int khronos_intptr_t; 232 | typedef unsigned long long int khronos_uintptr_t; 233 | typedef signed long long int khronos_ssize_t; 234 | typedef unsigned long long int khronos_usize_t; 235 | #else 236 | typedef signed long int khronos_intptr_t; 237 | typedef unsigned long int khronos_uintptr_t; 238 | typedef signed long int khronos_ssize_t; 239 | typedef unsigned long int khronos_usize_t; 240 | #endif 241 | 242 | #if KHRONOS_SUPPORT_FLOAT 243 | /* 244 | * Float type 245 | */ 246 | typedef float khronos_float_t; 247 | #endif 248 | 249 | #if KHRONOS_SUPPORT_INT64 250 | /* Time types 251 | * 252 | * These types can be used to represent a time interval in nanoseconds or 253 | * an absolute Unadjusted System Time. Unadjusted System Time is the number 254 | * of nanoseconds since some arbitrary system event (e.g. since the last 255 | * time the system booted). The Unadjusted System Time is an unsigned 256 | * 64 bit value that wraps back to 0 every 584 years. Time intervals 257 | * may be either signed or unsigned. 258 | */ 259 | typedef khronos_uint64_t khronos_utime_nanoseconds_t; 260 | typedef khronos_int64_t khronos_stime_nanoseconds_t; 261 | #endif 262 | 263 | /* 264 | * Dummy value used to pad enum types to 32 bits. 265 | */ 266 | #ifndef KHRONOS_MAX_ENUM 267 | #define KHRONOS_MAX_ENUM 0x7FFFFFFF 268 | #endif 269 | 270 | /* 271 | * Enumerated boolean type 272 | * 273 | * Values other than zero should be considered to be true. Therefore 274 | * comparisons should not be made against KHRONOS_TRUE. 275 | */ 276 | typedef enum { 277 | KHRONOS_FALSE = 0, 278 | KHRONOS_TRUE = 1, 279 | KHRONOS_BOOLEAN_ENUM_FORCE_SIZE = KHRONOS_MAX_ENUM 280 | } khronos_boolean_enum_t; 281 | 282 | #endif /* __khrplatform_h_ */ -------------------------------------------------------------------------------- /external/glad/src/glad.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | OpenGL, OpenGL ES loader generated by glad 0.1.24a0 on Thu Jun 28 02:29:54 2018. 4 | 5 | Language/Generator: C/C++ 6 | Specification: gl 7 | APIs: gl=4.0, gles2=3.0 8 | Profile: compatibility 9 | Extensions: 10 | 11 | Loader: True 12 | Local files: False 13 | Omit khrplatform: True 14 | 15 | Commandline: 16 | --profile="compatibility" --api="gl=4.0,gles2=3.0" --generator="c" --spec="gl" --omit-khrplatform --extensions="" 17 | Online: 18 | http://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gl%3D4.0&api=gles2%3D3.0 19 | */ 20 | 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | static void* get_proc(const char *namez); 27 | 28 | #if defined(_WIN32) || defined(__CYGWIN__) 29 | #include 30 | static HMODULE libGL; 31 | 32 | typedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*); 33 | static PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; 34 | 35 | #ifdef _MSC_VER 36 | #ifdef __has_include 37 | #if __has_include() 38 | #define HAVE_WINAPIFAMILY 1 39 | #endif 40 | #elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ 41 | #define HAVE_WINAPIFAMILY 1 42 | #endif 43 | #endif 44 | 45 | #ifdef HAVE_WINAPIFAMILY 46 | #include 47 | #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) 48 | #define IS_UWP 1 49 | #endif 50 | #endif 51 | 52 | static 53 | int open_gl(void) { 54 | #ifndef IS_UWP 55 | libGL = LoadLibraryW(L"opengl32.dll"); 56 | if(libGL != NULL) { 57 | gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE)GetProcAddress( 58 | libGL, "wglGetProcAddress"); 59 | return gladGetProcAddressPtr != NULL; 60 | } 61 | #endif 62 | 63 | return 0; 64 | } 65 | 66 | static 67 | void close_gl(void) { 68 | if(libGL != NULL) { 69 | FreeLibrary((HMODULE) libGL); 70 | libGL = NULL; 71 | } 72 | } 73 | #else 74 | #include 75 | static void* libGL; 76 | 77 | #ifndef __APPLE__ 78 | typedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*); 79 | static PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; 80 | #endif 81 | 82 | static 83 | int open_gl(void) { 84 | #ifdef __APPLE__ 85 | static const char *NAMES[] = { 86 | "../Frameworks/OpenGL.framework/OpenGL", 87 | "/Library/Frameworks/OpenGL.framework/OpenGL", 88 | "/System/Library/Frameworks/OpenGL.framework/OpenGL", 89 | "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL" 90 | }; 91 | #else 92 | static const char *NAMES[] = {"libGL.so.1", "libGL.so"}; 93 | #endif 94 | 95 | unsigned int index = 0; 96 | for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) { 97 | libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL); 98 | 99 | if(libGL != NULL) { 100 | #ifdef __APPLE__ 101 | return 1; 102 | #else 103 | gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL, 104 | "glXGetProcAddressARB"); 105 | return gladGetProcAddressPtr != NULL; 106 | #endif 107 | } 108 | } 109 | 110 | return 0; 111 | } 112 | 113 | static 114 | void close_gl(void) { 115 | if(libGL != NULL) { 116 | dlclose(libGL); 117 | libGL = NULL; 118 | } 119 | } 120 | #endif 121 | 122 | static 123 | void* get_proc(const char *namez) { 124 | void* result = NULL; 125 | if(libGL == NULL) return NULL; 126 | 127 | #ifndef __APPLE__ 128 | if(gladGetProcAddressPtr != NULL) { 129 | result = gladGetProcAddressPtr(namez); 130 | } 131 | #endif 132 | if(result == NULL) { 133 | #if defined(_WIN32) || defined(__CYGWIN__) 134 | result = (void*)GetProcAddress((HMODULE) libGL, namez); 135 | #else 136 | result = dlsym(libGL, namez); 137 | #endif 138 | } 139 | 140 | return result; 141 | } 142 | 143 | int gladLoadGL(void) { 144 | int status = 0; 145 | 146 | if(open_gl()) { 147 | status = gladLoadGLLoader(&get_proc); 148 | close_gl(); 149 | } 150 | 151 | return status; 152 | } 153 | 154 | struct gladGLversionStruct GLVersion; 155 | 156 | #if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) 157 | #define _GLAD_IS_SOME_NEW_VERSION 1 158 | #endif 159 | 160 | static int max_loaded_major; 161 | static int max_loaded_minor; 162 | 163 | static const char *exts = NULL; 164 | static int num_exts_i = 0; 165 | static char **exts_i = NULL; 166 | 167 | static int get_exts(void) { 168 | #ifdef _GLAD_IS_SOME_NEW_VERSION 169 | if(max_loaded_major < 3) { 170 | #endif 171 | exts = (const char *)glGetString(GL_EXTENSIONS); 172 | #ifdef _GLAD_IS_SOME_NEW_VERSION 173 | } else { 174 | unsigned int index; 175 | 176 | num_exts_i = 0; 177 | glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); 178 | if (num_exts_i > 0) { 179 | exts_i = (char **)realloc((void *)exts_i, (size_t)num_exts_i * (sizeof *exts_i)); 180 | } 181 | 182 | if (exts_i == NULL) { 183 | return 0; 184 | } 185 | 186 | for(index = 0; index < (unsigned)num_exts_i; index++) { 187 | const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index); 188 | size_t len = strlen(gl_str_tmp); 189 | 190 | char *local_str = (char*)malloc((len+1) * sizeof(char)); 191 | if(local_str != NULL) { 192 | #if _MSC_VER >= 1400 193 | strncpy_s(local_str, len+1, gl_str_tmp, len); 194 | #else 195 | strncpy(local_str, gl_str_tmp, len+1); 196 | #endif 197 | } 198 | exts_i[index] = local_str; 199 | } 200 | } 201 | #endif 202 | return 1; 203 | } 204 | 205 | static void free_exts(void) { 206 | if (exts_i != NULL) { 207 | int index; 208 | for(index = 0; index < num_exts_i; index++) { 209 | free((char *)exts_i[index]); 210 | } 211 | free((void *)exts_i); 212 | exts_i = NULL; 213 | } 214 | } 215 | 216 | static int has_ext(const char *ext) { 217 | #ifdef _GLAD_IS_SOME_NEW_VERSION 218 | if(max_loaded_major < 3) { 219 | #endif 220 | const char *extensions; 221 | const char *loc; 222 | const char *terminator; 223 | extensions = exts; 224 | if(extensions == NULL || ext == NULL) { 225 | return 0; 226 | } 227 | 228 | while(1) { 229 | loc = strstr(extensions, ext); 230 | if(loc == NULL) { 231 | return 0; 232 | } 233 | 234 | terminator = loc + strlen(ext); 235 | if((loc == extensions || *(loc - 1) == ' ') && 236 | (*terminator == ' ' || *terminator == '\0')) { 237 | return 1; 238 | } 239 | extensions = terminator; 240 | } 241 | #ifdef _GLAD_IS_SOME_NEW_VERSION 242 | } else { 243 | int index; 244 | if(exts_i == NULL) return 0; 245 | for(index = 0; index < num_exts_i; index++) { 246 | const char *e = exts_i[index]; 247 | 248 | if(exts_i[index] != NULL && strcmp(e, ext) == 0) { 249 | return 1; 250 | } 251 | } 252 | } 253 | #endif 254 | 255 | return 0; 256 | } 257 | int GLAD_GL_VERSION_1_0; 258 | int GLAD_GL_VERSION_1_1; 259 | int GLAD_GL_VERSION_1_2; 260 | int GLAD_GL_VERSION_1_3; 261 | int GLAD_GL_VERSION_1_4; 262 | int GLAD_GL_VERSION_1_5; 263 | int GLAD_GL_VERSION_2_0; 264 | int GLAD_GL_VERSION_2_1; 265 | int GLAD_GL_VERSION_3_0; 266 | int GLAD_GL_VERSION_3_1; 267 | int GLAD_GL_VERSION_3_2; 268 | int GLAD_GL_VERSION_3_3; 269 | int GLAD_GL_VERSION_4_0; 270 | int GLAD_GL_ES_VERSION_2_0; 271 | int GLAD_GL_ES_VERSION_3_0; 272 | PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D; 273 | PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui; 274 | PFNGLWINDOWPOS2SPROC glad_glWindowPos2s; 275 | PFNGLWINDOWPOS2IPROC glad_glWindowPos2i; 276 | PFNGLWINDOWPOS2FPROC glad_glWindowPos2f; 277 | PFNGLWINDOWPOS2DPROC glad_glWindowPos2d; 278 | PFNGLVERTEX2FVPROC glad_glVertex2fv; 279 | PFNGLINDEXIPROC glad_glIndexi; 280 | PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer; 281 | PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv; 282 | PFNGLRECTDVPROC glad_glRectdv; 283 | PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D; 284 | PFNGLEVALCOORD2DPROC glad_glEvalCoord2d; 285 | PFNGLEVALCOORD2FPROC glad_glEvalCoord2f; 286 | PFNGLINDEXDPROC glad_glIndexd; 287 | PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv; 288 | PFNGLINDEXFPROC glad_glIndexf; 289 | PFNGLBINDSAMPLERPROC glad_glBindSampler; 290 | PFNGLLINEWIDTHPROC glad_glLineWidth; 291 | PFNGLCOLORP3UIVPROC glad_glColorP3uiv; 292 | PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v; 293 | PFNGLGETMAPFVPROC glad_glGetMapfv; 294 | PFNGLINDEXSPROC glad_glIndexs; 295 | PFNGLCOMPILESHADERPROC glad_glCompileShader; 296 | PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying; 297 | PFNGLWINDOWPOS2IVPROC glad_glWindowPos2iv; 298 | PFNGLINDEXFVPROC glad_glIndexfv; 299 | PFNGLFOGIVPROC glad_glFogiv; 300 | PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate; 301 | PFNGLRASTERPOS2FVPROC glad_glRasterPos2fv; 302 | PFNGLLIGHTMODELIVPROC glad_glLightModeliv; 303 | PFNGLDEPTHRANGEFPROC glad_glDepthRangef; 304 | PFNGLCOLOR4UIPROC glad_glColor4ui; 305 | PFNGLSECONDARYCOLOR3FVPROC glad_glSecondaryColor3fv; 306 | PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui; 307 | PFNGLFOGFVPROC glad_glFogfv; 308 | PFNGLVERTEXP4UIPROC glad_glVertexP4ui; 309 | PFNGLENABLEIPROC glad_glEnablei; 310 | PFNGLVERTEX4IVPROC glad_glVertex4iv; 311 | PFNGLEVALCOORD1FVPROC glad_glEvalCoord1fv; 312 | PFNGLWINDOWPOS2SVPROC glad_glWindowPos2sv; 313 | PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui; 314 | PFNGLCREATESHADERPROC glad_glCreateShader; 315 | PFNGLISBUFFERPROC glad_glIsBuffer; 316 | PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv; 317 | PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers; 318 | PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D; 319 | PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D; 320 | PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f; 321 | PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate; 322 | PFNGLVERTEX4FVPROC glad_glVertex4fv; 323 | PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading; 324 | PFNGLBINDTEXTUREPROC glad_glBindTexture; 325 | PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s; 326 | PFNGLTEXCOORD2FVPROC glad_glTexCoord2fv; 327 | PFNGLSAMPLEMASKIPROC glad_glSampleMaski; 328 | PFNGLVERTEXP2UIPROC glad_glVertexP2ui; 329 | PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex; 330 | PFNGLTEXCOORD4FVPROC glad_glTexCoord4fv; 331 | PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv; 332 | PFNGLPOINTSIZEPROC glad_glPointSize; 333 | PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv; 334 | PFNGLDELETEPROGRAMPROC glad_glDeleteProgram; 335 | PFNGLCOLOR4BVPROC glad_glColor4bv; 336 | PFNGLRASTERPOS2FPROC glad_glRasterPos2f; 337 | PFNGLRASTERPOS2DPROC glad_glRasterPos2d; 338 | PFNGLLOADIDENTITYPROC glad_glLoadIdentity; 339 | PFNGLRASTERPOS2IPROC glad_glRasterPos2i; 340 | PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage; 341 | PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv; 342 | PFNGLCOLOR3BPROC glad_glColor3b; 343 | PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv; 344 | PFNGLEDGEFLAGPROC glad_glEdgeFlag; 345 | PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers; 346 | PFNGLVERTEX3DPROC glad_glVertex3d; 347 | PFNGLVERTEX3FPROC glad_glVertex3f; 348 | PFNGLVERTEX3IPROC glad_glVertex3i; 349 | PFNGLCOLOR3IPROC glad_glColor3i; 350 | PFNGLUNIFORM3DPROC glad_glUniform3d; 351 | PFNGLUNIFORM3FPROC glad_glUniform3f; 352 | PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv; 353 | PFNGLCOLOR3SPROC glad_glColor3s; 354 | PFNGLVERTEX3SPROC glad_glVertex3s; 355 | PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui; 356 | PFNGLCOLORMASKIPROC glad_glColorMaski; 357 | PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi; 358 | PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect; 359 | PFNGLTEXCOORD1IVPROC glad_glTexCoord1iv; 360 | PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer; 361 | PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback; 362 | PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui; 363 | PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv; 364 | PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex; 365 | PFNGLTEXSTORAGE3DPROC glad_glTexStorage3D; 366 | PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f; 367 | PFNGLVERTEX2IVPROC glad_glVertex2iv; 368 | PFNGLCOLOR3SVPROC glad_glColor3sv; 369 | PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv; 370 | PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv; 371 | PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv; 372 | PFNGLNORMALPOINTERPROC glad_glNormalPointer; 373 | PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv; 374 | PFNGLVERTEX4SVPROC glad_glVertex4sv; 375 | PFNGLPASSTHROUGHPROC glad_glPassThrough; 376 | PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui; 377 | PFNGLFOGIPROC glad_glFogi; 378 | PFNGLBEGINPROC glad_glBegin; 379 | PFNGLEVALCOORD2DVPROC glad_glEvalCoord2dv; 380 | PFNGLCOLOR3UBVPROC glad_glColor3ubv; 381 | PFNGLVERTEXPOINTERPROC glad_glVertexPointer; 382 | PFNGLSECONDARYCOLOR3UIVPROC glad_glSecondaryColor3uiv; 383 | PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers; 384 | PFNGLDRAWARRAYSPROC glad_glDrawArrays; 385 | PFNGLUNIFORM1UIPROC glad_glUniform1ui; 386 | PFNGLMULTITEXCOORD1DPROC glad_glMultiTexCoord1d; 387 | PFNGLMULTITEXCOORD1FPROC glad_glMultiTexCoord1f; 388 | PFNGLPROGRAMPARAMETERIPROC glad_glProgramParameteri; 389 | PFNGLLIGHTFVPROC glad_glLightfv; 390 | PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui; 391 | PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d; 392 | PFNGLCLEARPROC glad_glClear; 393 | PFNGLMULTITEXCOORD1IPROC glad_glMultiTexCoord1i; 394 | PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName; 395 | PFNGLMULTITEXCOORD1SPROC glad_glMultiTexCoord1s; 396 | PFNGLISENABLEDPROC glad_glIsEnabled; 397 | PFNGLSTENCILOPPROC glad_glStencilOp; 398 | PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv; 399 | PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D; 400 | PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv; 401 | PFNGLTRANSLATEFPROC glad_glTranslatef; 402 | PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub; 403 | PFNGLTRANSLATEDPROC glad_glTranslated; 404 | PFNGLTEXCOORD3SVPROC glad_glTexCoord3sv; 405 | PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation; 406 | PFNGLTEXIMAGE1DPROC glad_glTexImage1D; 407 | PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv; 408 | PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv; 409 | PFNGLSECONDARYCOLOR3BVPROC glad_glSecondaryColor3bv; 410 | PFNGLGETMATERIALFVPROC glad_glGetMaterialfv; 411 | PFNGLGETTEXIMAGEPROC glad_glGetTexImage; 412 | PFNGLFOGCOORDFVPROC glad_glFogCoordfv; 413 | PFNGLPIXELMAPUIVPROC glad_glPixelMapuiv; 414 | PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog; 415 | PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v; 416 | PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers; 417 | PFNGLINDEXSVPROC glad_glIndexsv; 418 | PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders; 419 | PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer; 420 | PFNGLVERTEX3IVPROC glad_glVertex3iv; 421 | PFNGLBITMAPPROC glad_glBitmap; 422 | PFNGLMATERIALIPROC glad_glMateriali; 423 | PFNGLISVERTEXARRAYPROC glad_glIsVertexArray; 424 | PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray; 425 | PFNGLGETQUERYIVPROC glad_glGetQueryiv; 426 | PFNGLTEXCOORD4FPROC glad_glTexCoord4f; 427 | PFNGLTEXCOORD4DPROC glad_glTexCoord4d; 428 | PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv; 429 | PFNGLTEXCOORD4IPROC glad_glTexCoord4i; 430 | PFNGLMATERIALFPROC glad_glMaterialf; 431 | PFNGLTEXCOORD4SPROC glad_glTexCoord4s; 432 | PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices; 433 | PFNGLISSHADERPROC glad_glIsShader; 434 | PFNGLMULTITEXCOORD2SPROC glad_glMultiTexCoord2s; 435 | PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv; 436 | PFNGLVERTEX3DVPROC glad_glVertex3dv; 437 | PFNGLGETINTEGER64VPROC glad_glGetInteger64v; 438 | PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv; 439 | PFNGLENABLEPROC glad_glEnable; 440 | PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv; 441 | PFNGLCOLOR4FVPROC glad_glColor4fv; 442 | PFNGLTEXCOORD1FVPROC glad_glTexCoord1fv; 443 | PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi; 444 | PFNGLTEXCOORD2SVPROC glad_glTexCoord2sv; 445 | PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv; 446 | PFNGLMULTITEXCOORD1DVPROC glad_glMultiTexCoord1dv; 447 | PFNGLMULTITEXCOORD2IPROC glad_glMultiTexCoord2i; 448 | PFNGLTEXCOORD3FVPROC glad_glTexCoord3fv; 449 | PFNGLSECONDARYCOLOR3USVPROC glad_glSecondaryColor3usv; 450 | PFNGLTEXGENFPROC glad_glTexGenf; 451 | PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv; 452 | PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui; 453 | PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui; 454 | PFNGLGETPOINTERVPROC glad_glGetPointerv; 455 | PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset; 456 | PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv; 457 | PFNGLNORMAL3FVPROC glad_glNormal3fv; 458 | PFNGLSECONDARYCOLOR3SPROC glad_glSecondaryColor3s; 459 | PFNGLDEPTHRANGEPROC glad_glDepthRange; 460 | PFNGLFRUSTUMPROC glad_glFrustum; 461 | PFNGLMULTITEXCOORD4SVPROC glad_glMultiTexCoord4sv; 462 | PFNGLDRAWBUFFERPROC glad_glDrawBuffer; 463 | PFNGLPUSHMATRIXPROC glad_glPushMatrix; 464 | PFNGLRASTERPOS3FVPROC glad_glRasterPos3fv; 465 | PFNGLORTHOPROC glad_glOrtho; 466 | PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced; 467 | PFNGLWINDOWPOS3SVPROC glad_glWindowPos3sv; 468 | PFNGLUNIFORM2DVPROC glad_glUniform2dv; 469 | PFNGLCLEARINDEXPROC glad_glClearIndex; 470 | PFNGLMAP1DPROC glad_glMap1d; 471 | PFNGLMAP1FPROC glad_glMap1f; 472 | PFNGLFLUSHPROC glad_glFlush; 473 | PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv; 474 | PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed; 475 | PFNGLINDEXIVPROC glad_glIndexiv; 476 | PFNGLRASTERPOS3SVPROC glad_glRasterPos3sv; 477 | PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv; 478 | PFNGLPIXELZOOMPROC glad_glPixelZoom; 479 | PFNGLFENCESYNCPROC glad_glFenceSync; 480 | PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays; 481 | PFNGLCOLORP3UIPROC glad_glColorP3ui; 482 | PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv; 483 | PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender; 484 | PFNGLGETSHADERPRECISIONFORMATPROC glad_glGetShaderPrecisionFormat; 485 | PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex; 486 | PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv; 487 | PFNGLLIGHTIPROC glad_glLighti; 488 | PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv; 489 | PFNGLLIGHTFPROC glad_glLightf; 490 | PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation; 491 | PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate; 492 | PFNGLGENSAMPLERSPROC glad_glGenSamplers; 493 | PFNGLCLAMPCOLORPROC glad_glClampColor; 494 | PFNGLUNIFORM4IVPROC glad_glUniform4iv; 495 | PFNGLCLEARSTENCILPROC glad_glClearStencil; 496 | PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv; 497 | PFNGLMULTITEXCOORD3FVPROC glad_glMultiTexCoord3fv; 498 | PFNGLGETPIXELMAPUIVPROC glad_glGetPixelMapuiv; 499 | PFNGLGENTEXTURESPROC glad_glGenTextures; 500 | PFNGLTEXCOORD4IVPROC glad_glTexCoord4iv; 501 | PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback; 502 | PFNGLUNIFORM1DVPROC glad_glUniform1dv; 503 | PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv; 504 | PFNGLINDEXPOINTERPROC glad_glIndexPointer; 505 | PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv; 506 | PFNGLISSYNCPROC glad_glIsSync; 507 | PFNGLVERTEX2FPROC glad_glVertex2f; 508 | PFNGLVERTEX2DPROC glad_glVertex2d; 509 | PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers; 510 | PFNGLUNIFORM2IPROC glad_glUniform2i; 511 | PFNGLMAPGRID2DPROC glad_glMapGrid2d; 512 | PFNGLMAPGRID2FPROC glad_glMapGrid2f; 513 | PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui; 514 | PFNGLVERTEX2IPROC glad_glVertex2i; 515 | PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer; 516 | PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer; 517 | PFNGLVERTEX2SPROC glad_glVertex2s; 518 | PFNGLNORMAL3BVPROC glad_glNormal3bv; 519 | PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv; 520 | PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange; 521 | PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv; 522 | PFNGLSECONDARYCOLOR3SVPROC glad_glSecondaryColor3sv; 523 | PFNGLVERTEX3SVPROC glad_glVertex3sv; 524 | PFNGLGENQUERIESPROC glad_glGenQueries; 525 | PFNGLGETPIXELMAPFVPROC glad_glGetPixelMapfv; 526 | PFNGLTEXENVFPROC glad_glTexEnvf; 527 | PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui; 528 | PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D; 529 | PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v; 530 | PFNGLFOGCOORDDPROC glad_glFogCoordd; 531 | PFNGLFOGCOORDFPROC glad_glFogCoordf; 532 | PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D; 533 | PFNGLTEXENVIPROC glad_glTexEnvi; 534 | PFNGLMULTITEXCOORD1IVPROC glad_glMultiTexCoord1iv; 535 | PFNGLISENABLEDIPROC glad_glIsEnabledi; 536 | PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui; 537 | PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i; 538 | PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed; 539 | PFNGLMULTITEXCOORD2DVPROC glad_glMultiTexCoord2dv; 540 | PFNGLUNIFORM2IVPROC glad_glUniform2iv; 541 | PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv; 542 | PFNGLGETINTERNALFORMATIVPROC glad_glGetInternalformativ; 543 | PFNGLUNIFORM4UIVPROC glad_glUniform4uiv; 544 | PFNGLMATRIXMODEPROC glad_glMatrixMode; 545 | PFNGLFEEDBACKBUFFERPROC glad_glFeedbackBuffer; 546 | PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed; 547 | PFNGLGETMAPIVPROC glad_glGetMapiv; 548 | PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D; 549 | PFNGLUNIFORM4DPROC glad_glUniform4d; 550 | PFNGLGETSHADERIVPROC glad_glGetShaderiv; 551 | PFNGLMULTITEXCOORD2DPROC glad_glMultiTexCoord2d; 552 | PFNGLMULTITEXCOORD2FPROC glad_glMultiTexCoord2f; 553 | PFNGLINVALIDATEFRAMEBUFFERPROC glad_glInvalidateFramebuffer; 554 | PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation; 555 | PFNGLPRIORITIZETEXTURESPROC glad_glPrioritizeTextures; 556 | PFNGLCALLLISTPROC glad_glCallList; 557 | PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv; 558 | PFNGLSECONDARYCOLOR3UBVPROC glad_glSecondaryColor3ubv; 559 | PFNGLGETDOUBLEVPROC glad_glGetDoublev; 560 | PFNGLMULTITEXCOORD3IVPROC glad_glMultiTexCoord3iv; 561 | PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d; 562 | PFNGLUNIFORM4DVPROC glad_glUniform4dv; 563 | PFNGLLIGHTMODELFPROC glad_glLightModelf; 564 | PFNGLGETUNIFORMIVPROC glad_glGetUniformiv; 565 | PFNGLVERTEX2SVPROC glad_glVertex2sv; 566 | PFNGLLIGHTMODELIPROC glad_glLightModeli; 567 | PFNGLWINDOWPOS3IVPROC glad_glWindowPos3iv; 568 | PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv; 569 | PFNGLUNIFORM3FVPROC glad_glUniform3fv; 570 | PFNGLPIXELSTOREIPROC glad_glPixelStorei; 571 | PFNGLCALLLISTSPROC glad_glCallLists; 572 | PFNGLINVALIDATESUBFRAMEBUFFERPROC glad_glInvalidateSubFramebuffer; 573 | PFNGLMAPBUFFERPROC glad_glMapBuffer; 574 | PFNGLSECONDARYCOLOR3DPROC glad_glSecondaryColor3d; 575 | PFNGLTEXCOORD3IPROC glad_glTexCoord3i; 576 | PFNGLMULTITEXCOORD4FVPROC glad_glMultiTexCoord4fv; 577 | PFNGLRASTERPOS3IPROC glad_glRasterPos3i; 578 | PFNGLSECONDARYCOLOR3BPROC glad_glSecondaryColor3b; 579 | PFNGLRASTERPOS3DPROC glad_glRasterPos3d; 580 | PFNGLRASTERPOS3FPROC glad_glRasterPos3f; 581 | PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D; 582 | PFNGLTEXCOORD3FPROC glad_glTexCoord3f; 583 | PFNGLDELETESYNCPROC glad_glDeleteSync; 584 | PFNGLTEXCOORD3DPROC glad_glTexCoord3d; 585 | PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv; 586 | PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample; 587 | PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv; 588 | PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv; 589 | PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements; 590 | PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv; 591 | PFNGLTEXCOORD3SPROC glad_glTexCoord3s; 592 | PFNGLUNIFORM3IVPROC glad_glUniform3iv; 593 | PFNGLRASTERPOS3SPROC glad_glRasterPos3s; 594 | PFNGLPOLYGONMODEPROC glad_glPolygonMode; 595 | PFNGLDRAWBUFFERSPROC glad_glDrawBuffers; 596 | PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv; 597 | PFNGLARETEXTURESRESIDENTPROC glad_glAreTexturesResident; 598 | PFNGLISLISTPROC glad_glIsList; 599 | PFNGLRASTERPOS2SVPROC glad_glRasterPos2sv; 600 | PFNGLRASTERPOS4SVPROC glad_glRasterPos4sv; 601 | PFNGLCOLOR4SPROC glad_glColor4s; 602 | PFNGLGETPROGRAMBINARYPROC glad_glGetProgramBinary; 603 | PFNGLUSEPROGRAMPROC glad_glUseProgram; 604 | PFNGLLINESTIPPLEPROC glad_glLineStipple; 605 | PFNGLMULTITEXCOORD1SVPROC glad_glMultiTexCoord1sv; 606 | PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog; 607 | PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv; 608 | PFNGLMULTITEXCOORD2IVPROC glad_glMultiTexCoord2iv; 609 | PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv; 610 | PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray; 611 | PFNGLCOLOR4BPROC glad_glColor4b; 612 | PFNGLSECONDARYCOLOR3FPROC glad_glSecondaryColor3f; 613 | PFNGLCOLOR4FPROC glad_glColor4f; 614 | PFNGLCOLOR4DPROC glad_glColor4d; 615 | PFNGLCOLOR4IPROC glad_glColor4i; 616 | PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv; 617 | PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex; 618 | PFNGLRASTERPOS3IVPROC glad_glRasterPos3iv; 619 | PFNGLVERTEX2DVPROC glad_glVertex2dv; 620 | PFNGLTEXCOORD4SVPROC glad_glTexCoord4sv; 621 | PFNGLUNIFORM2UIVPROC glad_glUniform2uiv; 622 | PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D; 623 | PFNGLFINISHPROC glad_glFinish; 624 | PFNGLGETBOOLEANVPROC glad_glGetBooleanv; 625 | PFNGLDELETESHADERPROC glad_glDeleteShader; 626 | PFNGLDRAWELEMENTSPROC glad_glDrawElements; 627 | PFNGLRASTERPOS2SPROC glad_glRasterPos2s; 628 | PFNGLGETMAPDVPROC glad_glGetMapdv; 629 | PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv; 630 | PFNGLMATERIALFVPROC glad_glMaterialfv; 631 | PFNGLVIEWPORTPROC glad_glViewport; 632 | PFNGLUNIFORM1UIVPROC glad_glUniform1uiv; 633 | PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings; 634 | PFNGLINDEXDVPROC glad_glIndexdv; 635 | PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D; 636 | PFNGLTEXCOORD3IVPROC glad_glTexCoord3iv; 637 | PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i; 638 | PFNGLCLEARDEPTHPROC glad_glClearDepth; 639 | PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv; 640 | PFNGLTEXPARAMETERFPROC glad_glTexParameterf; 641 | PFNGLTEXPARAMETERIPROC glad_glTexParameteri; 642 | PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv; 643 | PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource; 644 | PFNGLTEXBUFFERPROC glad_glTexBuffer; 645 | PFNGLPOPNAMEPROC glad_glPopName; 646 | PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram; 647 | PFNGLPIXELSTOREFPROC glad_glPixelStoref; 648 | PFNGLUNIFORM3UIVPROC glad_glUniform3uiv; 649 | PFNGLRASTERPOS4FVPROC glad_glRasterPos4fv; 650 | PFNGLEVALCOORD1DVPROC glad_glEvalCoord1dv; 651 | PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv; 652 | PFNGLRECTIPROC glad_glRecti; 653 | PFNGLCOLOR4UBPROC glad_glColor4ub; 654 | PFNGLMULTTRANSPOSEMATRIXFPROC glad_glMultTransposeMatrixf; 655 | PFNGLRECTFPROC glad_glRectf; 656 | PFNGLRECTDPROC glad_glRectd; 657 | PFNGLNORMAL3SVPROC glad_glNormal3sv; 658 | PFNGLNEWLISTPROC glad_glNewList; 659 | PFNGLCOLOR4USPROC glad_glColor4us; 660 | PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv; 661 | PFNGLLINKPROGRAMPROC glad_glLinkProgram; 662 | PFNGLHINTPROC glad_glHint; 663 | PFNGLRECTSPROC glad_glRects; 664 | PFNGLTEXCOORD2DVPROC glad_glTexCoord2dv; 665 | PFNGLRASTERPOS4IVPROC glad_glRasterPos4iv; 666 | PFNGLGETSTRINGPROC glad_glGetString; 667 | PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv; 668 | PFNGLEDGEFLAGVPROC glad_glEdgeFlagv; 669 | PFNGLDETACHSHADERPROC glad_glDetachShader; 670 | PFNGLSCALEFPROC glad_glScalef; 671 | PFNGLENDQUERYPROC glad_glEndQuery; 672 | PFNGLSCALEDPROC glad_glScaled; 673 | PFNGLEDGEFLAGPOINTERPROC glad_glEdgeFlagPointer; 674 | PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv; 675 | PFNGLCOPYPIXELSPROC glad_glCopyPixels; 676 | PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui; 677 | PFNGLPOPATTRIBPROC glad_glPopAttrib; 678 | PFNGLDELETETEXTURESPROC glad_glDeleteTextures; 679 | PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate; 680 | PFNGLDELETEQUERIESPROC glad_glDeleteQueries; 681 | PFNGLNORMALP3UIVPROC glad_glNormalP3uiv; 682 | PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f; 683 | PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d; 684 | PFNGLINITNAMESPROC glad_glInitNames; 685 | PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v; 686 | PFNGLCOLOR3DVPROC glad_glColor3dv; 687 | PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i; 688 | PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv; 689 | PFNGLWAITSYNCPROC glad_glWaitSync; 690 | PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s; 691 | PFNGLCOLORMATERIALPROC glad_glColorMaterial; 692 | PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage; 693 | PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri; 694 | PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf; 695 | PFNGLUNIFORM1FPROC glad_glUniform1f; 696 | PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv; 697 | PFNGLUNIFORM1DPROC glad_glUniform1d; 698 | PFNGLRENDERMODEPROC glad_glRenderMode; 699 | PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage; 700 | PFNGLWINDOWPOS2DVPROC glad_glWindowPos2dv; 701 | PFNGLUNIFORM1IPROC glad_glUniform1i; 702 | PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib; 703 | PFNGLUNIFORM3IPROC glad_glUniform3i; 704 | PFNGLPIXELTRANSFERIPROC glad_glPixelTransferi; 705 | PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D; 706 | PFNGLDISABLEPROC glad_glDisable; 707 | PFNGLLOGICOPPROC glad_glLogicOp; 708 | PFNGLEVALPOINT2PROC glad_glEvalPoint2; 709 | PFNGLPIXELTRANSFERFPROC glad_glPixelTransferf; 710 | PFNGLSECONDARYCOLOR3IPROC glad_glSecondaryColor3i; 711 | PFNGLUNIFORM4UIPROC glad_glUniform4ui; 712 | PFNGLCOLOR3FPROC glad_glColor3f; 713 | PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer; 714 | PFNGLGETTEXENVFVPROC glad_glGetTexEnvfv; 715 | PFNGLRECTFVPROC glad_glRectfv; 716 | PFNGLCULLFACEPROC glad_glCullFace; 717 | PFNGLGETLIGHTFVPROC glad_glGetLightfv; 718 | PFNGLCOLOR3DPROC glad_glColor3d; 719 | PFNGLTEXGENDPROC glad_glTexGend; 720 | PFNGLTEXGENIPROC glad_glTexGeni; 721 | PFNGLMULTITEXCOORD3SPROC glad_glMultiTexCoord3s; 722 | PFNGLGETSTRINGIPROC glad_glGetStringi; 723 | PFNGLMULTITEXCOORD3IPROC glad_glMultiTexCoord3i; 724 | PFNGLMULTITEXCOORD3FPROC glad_glMultiTexCoord3f; 725 | PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream; 726 | PFNGLMULTITEXCOORD3DPROC glad_glMultiTexCoord3d; 727 | PFNGLATTACHSHADERPROC glad_glAttachShader; 728 | PFNGLFOGCOORDDVPROC glad_glFogCoorddv; 729 | PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv; 730 | PFNGLGETTEXGENFVPROC glad_glGetTexGenfv; 731 | PFNGLQUERYCOUNTERPROC glad_glQueryCounter; 732 | PFNGLFOGCOORDPOINTERPROC glad_glFogCoordPointer; 733 | PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex; 734 | PFNGLSHADERBINARYPROC glad_glShaderBinary; 735 | PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D; 736 | PFNGLTEXGENIVPROC glad_glTexGeniv; 737 | PFNGLRASTERPOS2DVPROC glad_glRasterPos2dv; 738 | PFNGLSECONDARYCOLOR3DVPROC glad_glSecondaryColor3dv; 739 | PFNGLCLIENTACTIVETEXTUREPROC glad_glClientActiveTexture; 740 | PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv; 741 | PFNGLSECONDARYCOLOR3USPROC glad_glSecondaryColor3us; 742 | PFNGLNORMALP3UIPROC glad_glNormalP3ui; 743 | PFNGLTEXENVFVPROC glad_glTexEnvfv; 744 | PFNGLREADBUFFERPROC glad_glReadBuffer; 745 | PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv; 746 | PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced; 747 | PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap; 748 | PFNGLWINDOWPOS3FVPROC glad_glWindowPos3fv; 749 | PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv; 750 | PFNGLLIGHTMODELFVPROC glad_glLightModelfv; 751 | PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv; 752 | PFNGLDELETELISTSPROC glad_glDeleteLists; 753 | PFNGLGETCLIPPLANEPROC glad_glGetClipPlane; 754 | PFNGLVERTEX4DVPROC glad_glVertex4dv; 755 | PFNGLTEXCOORD2DPROC glad_glTexCoord2d; 756 | PFNGLPOPMATRIXPROC glad_glPopMatrix; 757 | PFNGLTEXCOORD2FPROC glad_glTexCoord2f; 758 | PFNGLCOLOR4IVPROC glad_glColor4iv; 759 | PFNGLINDEXUBVPROC glad_glIndexubv; 760 | PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer; 761 | PFNGLTEXCOORD2IPROC glad_glTexCoord2i; 762 | PFNGLRASTERPOS4DPROC glad_glRasterPos4d; 763 | PFNGLRASTERPOS4FPROC glad_glRasterPos4f; 764 | PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s; 765 | PFNGLTEXCOORD2SPROC glad_glTexCoord2s; 766 | PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer; 767 | PFNGLVERTEX3FVPROC glad_glVertex3fv; 768 | PFNGLTEXCOORD4DVPROC glad_glTexCoord4dv; 769 | PFNGLMATERIALIVPROC glad_glMaterialiv; 770 | PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv; 771 | PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv; 772 | PFNGLISPROGRAMPROC glad_glIsProgram; 773 | PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv; 774 | PFNGLVERTEX4SPROC glad_glVertex4s; 775 | PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv; 776 | PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv; 777 | PFNGLNORMAL3DVPROC glad_glNormal3dv; 778 | PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback; 779 | PFNGLUNIFORM4IPROC glad_glUniform4i; 780 | PFNGLACTIVETEXTUREPROC glad_glActiveTexture; 781 | PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray; 782 | PFNGLROTATEDPROC glad_glRotated; 783 | PFNGLROTATEFPROC glad_glRotatef; 784 | PFNGLVERTEX4IPROC glad_glVertex4i; 785 | PFNGLREADPIXELSPROC glad_glReadPixels; 786 | PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv; 787 | PFNGLLOADNAMEPROC glad_glLoadName; 788 | PFNGLUNIFORM4FPROC glad_glUniform4f; 789 | PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample; 790 | PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays; 791 | PFNGLSHADEMODELPROC glad_glShadeModel; 792 | PFNGLMAPGRID1DPROC glad_glMapGrid1d; 793 | PFNGLGETUNIFORMFVPROC glad_glGetUniformfv; 794 | PFNGLMAPGRID1FPROC glad_glMapGrid1f; 795 | PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv; 796 | PFNGLDISABLECLIENTSTATEPROC glad_glDisableClientState; 797 | PFNGLMULTITEXCOORD3SVPROC glad_glMultiTexCoord3sv; 798 | PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex; 799 | PFNGLSECONDARYCOLORPOINTERPROC glad_glSecondaryColorPointer; 800 | PFNGLALPHAFUNCPROC glad_glAlphaFunc; 801 | PFNGLUNIFORM1IVPROC glad_glUniform1iv; 802 | PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName; 803 | PFNGLMULTITEXCOORD4IVPROC glad_glMultiTexCoord4iv; 804 | PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv; 805 | PFNGLSTENCILFUNCPROC glad_glStencilFunc; 806 | PFNGLMULTITEXCOORD1FVPROC glad_glMultiTexCoord1fv; 807 | PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding; 808 | PFNGLCOLOR4UIVPROC glad_glColor4uiv; 809 | PFNGLRECTIVPROC glad_glRectiv; 810 | PFNGLCOLORP4UIPROC glad_glColorP4ui; 811 | PFNGLRASTERPOS3DVPROC glad_glRasterPos3dv; 812 | PFNGLEVALMESH2PROC glad_glEvalMesh2; 813 | PFNGLEVALMESH1PROC glad_glEvalMesh1; 814 | PFNGLTEXCOORDPOINTERPROC glad_glTexCoordPointer; 815 | PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv; 816 | PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv; 817 | PFNGLEVALCOORD2FVPROC glad_glEvalCoord2fv; 818 | PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv; 819 | PFNGLCOLOR4UBVPROC glad_glColor4ubv; 820 | PFNGLLOADTRANSPOSEMATRIXDPROC glad_glLoadTransposeMatrixd; 821 | PFNGLLOADTRANSPOSEMATRIXFPROC glad_glLoadTransposeMatrixf; 822 | PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i; 823 | PFNGLRASTERPOS2IVPROC glad_glRasterPos2iv; 824 | PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData; 825 | PFNGLTEXENVIVPROC glad_glTexEnviv; 826 | PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate; 827 | PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui; 828 | PFNGLGENBUFFERSPROC glad_glGenBuffers; 829 | PFNGLSELECTBUFFERPROC glad_glSelectBuffer; 830 | PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex; 831 | PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv; 832 | PFNGLPUSHATTRIBPROC glad_glPushAttrib; 833 | PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer; 834 | PFNGLBLENDFUNCPROC glad_glBlendFunc; 835 | PFNGLCREATEPROGRAMPROC glad_glCreateProgram; 836 | PFNGLTEXIMAGE3DPROC glad_glTexImage3D; 837 | PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer; 838 | PFNGLLIGHTIVPROC glad_glLightiv; 839 | PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex; 840 | PFNGLTEXGENFVPROC glad_glTexGenfv; 841 | PFNGLENDPROC glad_glEnd; 842 | PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers; 843 | PFNGLSCISSORPROC glad_glScissor; 844 | PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv; 845 | PFNGLCLIPPLANEPROC glad_glClipPlane; 846 | PFNGLPUSHNAMEPROC glad_glPushName; 847 | PFNGLTEXGENDVPROC glad_glTexGendv; 848 | PFNGLINDEXUBPROC glad_glIndexub; 849 | PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv; 850 | PFNGLSECONDARYCOLOR3IVPROC glad_glSecondaryColor3iv; 851 | PFNGLRASTERPOS4IPROC glad_glRasterPos4i; 852 | PFNGLMULTTRANSPOSEMATRIXDPROC glad_glMultTransposeMatrixd; 853 | PFNGLCLEARCOLORPROC glad_glClearColor; 854 | PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv; 855 | PFNGLNORMAL3SPROC glad_glNormal3s; 856 | PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv; 857 | PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv; 858 | PFNGLPOINTPARAMETERIPROC glad_glPointParameteri; 859 | PFNGLCOLORP4UIVPROC glad_glColorP4uiv; 860 | PFNGLBLENDCOLORPROC glad_glBlendColor; 861 | PFNGLWINDOWPOS3DPROC glad_glWindowPos3d; 862 | PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv; 863 | PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv; 864 | PFNGLUNIFORM3UIPROC glad_glUniform3ui; 865 | PFNGLCOLOR4DVPROC glad_glColor4dv; 866 | PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv; 867 | PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv; 868 | PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback; 869 | PFNGLUNIFORM2FVPROC glad_glUniform2fv; 870 | PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName; 871 | PFNGLSECONDARYCOLOR3UBPROC glad_glSecondaryColor3ub; 872 | PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect; 873 | PFNGLSECONDARYCOLOR3UIPROC glad_glSecondaryColor3ui; 874 | PFNGLTEXCOORD3DVPROC glad_glTexCoord3dv; 875 | PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv; 876 | PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange; 877 | PFNGLNORMAL3IVPROC glad_glNormal3iv; 878 | PFNGLGETUNIFORMDVPROC glad_glGetUniformdv; 879 | PFNGLWINDOWPOS3SPROC glad_glWindowPos3s; 880 | PFNGLPOINTPARAMETERFPROC glad_glPointParameterf; 881 | PFNGLCLEARDEPTHFPROC glad_glClearDepthf; 882 | PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv; 883 | PFNGLWINDOWPOS3IPROC glad_glWindowPos3i; 884 | PFNGLMULTITEXCOORD4SPROC glad_glMultiTexCoord4s; 885 | PFNGLWINDOWPOS3FPROC glad_glWindowPos3f; 886 | PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks; 887 | PFNGLCOLOR3USPROC glad_glColor3us; 888 | PFNGLCOLOR3UIVPROC glad_glColor3uiv; 889 | PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv; 890 | PFNGLGETLIGHTIVPROC glad_glGetLightiv; 891 | PFNGLDEPTHFUNCPROC glad_glDepthFunc; 892 | PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D; 893 | PFNGLLISTBASEPROC glad_glListBase; 894 | PFNGLMULTITEXCOORD4FPROC glad_glMultiTexCoord4f; 895 | PFNGLCOLOR3UBPROC glad_glColor3ub; 896 | PFNGLMULTITEXCOORD4DPROC glad_glMultiTexCoord4d; 897 | PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv; 898 | PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei; 899 | PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv; 900 | PFNGLCOLOR3UIPROC glad_glColor3ui; 901 | PFNGLMULTITEXCOORD4IPROC glad_glMultiTexCoord4i; 902 | PFNGLGETPOLYGONSTIPPLEPROC glad_glGetPolygonStipple; 903 | PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync; 904 | PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui; 905 | PFNGLMULTITEXCOORD4DVPROC glad_glMultiTexCoord4dv; 906 | PFNGLCOLORMASKPROC glad_glColorMask; 907 | PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv; 908 | PFNGLBLENDEQUATIONPROC glad_glBlendEquation; 909 | PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation; 910 | PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv; 911 | PFNGLRASTERPOS4SPROC glad_glRasterPos4s; 912 | PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback; 913 | PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv; 914 | PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv; 915 | PFNGLMULTITEXCOORD3DVPROC glad_glMultiTexCoord3dv; 916 | PFNGLCOLOR4SVPROC glad_glColor4sv; 917 | PFNGLPOPCLIENTATTRIBPROC glad_glPopClientAttrib; 918 | PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback; 919 | PFNGLFOGFPROC glad_glFogf; 920 | PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv; 921 | PFNGLPROGRAMBINARYPROC glad_glProgramBinary; 922 | PFNGLISSAMPLERPROC glad_glIsSampler; 923 | PFNGLVERTEXP3UIPROC glad_glVertexP3ui; 924 | PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor; 925 | PFNGLCOLOR3IVPROC glad_glColor3iv; 926 | PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D; 927 | PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks; 928 | PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D; 929 | PFNGLTEXCOORD1IPROC glad_glTexCoord1i; 930 | PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus; 931 | PFNGLTEXCOORD1DPROC glad_glTexCoord1d; 932 | PFNGLTEXCOORD1FPROC glad_glTexCoord1f; 933 | PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender; 934 | PFNGLENABLECLIENTSTATEPROC glad_glEnableClientState; 935 | PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation; 936 | PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv; 937 | PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv; 938 | PFNGLBLENDFUNCIPROC glad_glBlendFunci; 939 | PFNGLMULTITEXCOORD2SVPROC glad_glMultiTexCoord2sv; 940 | PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv; 941 | PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements; 942 | PFNGLTEXCOORD1SPROC glad_glTexCoord1s; 943 | PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase; 944 | PFNGLBUFFERSUBDATAPROC glad_glBufferSubData; 945 | PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv; 946 | PFNGLGENLISTSPROC glad_glGenLists; 947 | PFNGLCOLOR3BVPROC glad_glColor3bv; 948 | PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange; 949 | PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture; 950 | PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei; 951 | PFNGLGETTEXGENDVPROC glad_glGetTexGendv; 952 | PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays; 953 | PFNGLENDLISTPROC glad_glEndList; 954 | PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv; 955 | PFNGLUNIFORM2UIPROC glad_glUniform2ui; 956 | PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv; 957 | PFNGLCOLOR3USVPROC glad_glColor3usv; 958 | PFNGLWINDOWPOS2FVPROC glad_glWindowPos2fv; 959 | PFNGLDISABLEIPROC glad_glDisablei; 960 | PFNGLINDEXMASKPROC glad_glIndexMask; 961 | PFNGLPUSHCLIENTATTRIBPROC glad_glPushClientAttrib; 962 | PFNGLSHADERSOURCEPROC glad_glShaderSource; 963 | PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName; 964 | PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv; 965 | PFNGLRELEASESHADERCOMPILERPROC glad_glReleaseShaderCompiler; 966 | PFNGLCLEARACCUMPROC glad_glClearAccum; 967 | PFNGLGETSYNCIVPROC glad_glGetSynciv; 968 | PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv; 969 | PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri; 970 | PFNGLUNIFORM2FPROC glad_glUniform2f; 971 | PFNGLBEGINQUERYPROC glad_glBeginQuery; 972 | PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex; 973 | PFNGLBINDBUFFERPROC glad_glBindBuffer; 974 | PFNGLMAP2DPROC glad_glMap2d; 975 | PFNGLMAP2FPROC glad_glMap2f; 976 | PFNGLUNIFORM2DPROC glad_glUniform2d; 977 | PFNGLVERTEX4DPROC glad_glVertex4d; 978 | PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv; 979 | PFNGLTEXCOORD1SVPROC glad_glTexCoord1sv; 980 | PFNGLBUFFERDATAPROC glad_glBufferData; 981 | PFNGLEVALPOINT1PROC glad_glEvalPoint1; 982 | PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv; 983 | PFNGLTEXCOORD1DVPROC glad_glTexCoord1dv; 984 | PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui; 985 | PFNGLGETERRORPROC glad_glGetError; 986 | PFNGLGETTEXENVIVPROC glad_glGetTexEnviv; 987 | PFNGLGETPROGRAMIVPROC glad_glGetProgramiv; 988 | PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui; 989 | PFNGLGETFLOATVPROC glad_glGetFloatv; 990 | PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D; 991 | PFNGLMULTITEXCOORD2FVPROC glad_glMultiTexCoord2fv; 992 | PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv; 993 | PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv; 994 | PFNGLEVALCOORD1DPROC glad_glEvalCoord1d; 995 | PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv; 996 | PFNGLEVALCOORD1FPROC glad_glEvalCoord1f; 997 | PFNGLPIXELMAPFVPROC glad_glPixelMapfv; 998 | PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv; 999 | PFNGLGETPIXELMAPUSVPROC glad_glGetPixelMapusv; 1000 | PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv; 1001 | PFNGLGETINTEGERVPROC glad_glGetIntegerv; 1002 | PFNGLACCUMPROC glad_glAccum; 1003 | PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv; 1004 | PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv; 1005 | PFNGLRASTERPOS4DVPROC glad_glRasterPos4dv; 1006 | PFNGLTEXCOORD2IVPROC glad_glTexCoord2iv; 1007 | PFNGLISQUERYPROC glad_glIsQuery; 1008 | PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv; 1009 | PFNGLWINDOWPOS3DVPROC glad_glWindowPos3dv; 1010 | PFNGLTEXIMAGE2DPROC glad_glTexImage2D; 1011 | PFNGLSTENCILMASKPROC glad_glStencilMask; 1012 | PFNGLDRAWPIXELSPROC glad_glDrawPixels; 1013 | PFNGLMULTMATRIXDPROC glad_glMultMatrixd; 1014 | PFNGLMULTMATRIXFPROC glad_glMultMatrixf; 1015 | PFNGLISTEXTUREPROC glad_glIsTexture; 1016 | PFNGLGETMATERIALIVPROC glad_glGetMaterialiv; 1017 | PFNGLUNIFORM1FVPROC glad_glUniform1fv; 1018 | PFNGLLOADMATRIXFPROC glad_glLoadMatrixf; 1019 | PFNGLTEXSTORAGE2DPROC glad_glTexStorage2D; 1020 | PFNGLLOADMATRIXDPROC glad_glLoadMatrixd; 1021 | PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv; 1022 | PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv; 1023 | PFNGLVERTEX4FPROC glad_glVertex4f; 1024 | PFNGLRECTSVPROC glad_glRectsv; 1025 | PFNGLCOLOR4USVPROC glad_glColor4usv; 1026 | PFNGLUNIFORM3DVPROC glad_glUniform3dv; 1027 | PFNGLPOLYGONSTIPPLEPROC glad_glPolygonStipple; 1028 | PFNGLINTERLEAVEDARRAYSPROC glad_glInterleavedArrays; 1029 | PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation; 1030 | PFNGLNORMAL3IPROC glad_glNormal3i; 1031 | PFNGLNORMAL3FPROC glad_glNormal3f; 1032 | PFNGLNORMAL3DPROC glad_glNormal3d; 1033 | PFNGLNORMAL3BPROC glad_glNormal3b; 1034 | PFNGLPIXELMAPUSVPROC glad_glPixelMapusv; 1035 | PFNGLGETTEXGENIVPROC glad_glGetTexGeniv; 1036 | PFNGLARRAYELEMENTPROC glad_glArrayElement; 1037 | PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData; 1038 | PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv; 1039 | PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d; 1040 | PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback; 1041 | PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f; 1042 | PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv; 1043 | PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v; 1044 | PFNGLDEPTHMASKPROC glad_glDepthMask; 1045 | PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s; 1046 | PFNGLCOLOR3FVPROC glad_glColor3fv; 1047 | PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample; 1048 | PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv; 1049 | PFNGLUNIFORM4FVPROC glad_glUniform4fv; 1050 | PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform; 1051 | PFNGLCOLORPOINTERPROC glad_glColorPointer; 1052 | PFNGLFRONTFACEPROC glad_glFrontFace; 1053 | PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v; 1054 | PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv; 1055 | static void load_GL_VERSION_1_0(GLADloadproc load) { 1056 | if(!GLAD_GL_VERSION_1_0) return; 1057 | glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); 1058 | glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); 1059 | glad_glHint = (PFNGLHINTPROC)load("glHint"); 1060 | glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); 1061 | glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize"); 1062 | glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode"); 1063 | glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); 1064 | glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); 1065 | glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); 1066 | glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); 1067 | glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); 1068 | glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D"); 1069 | glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); 1070 | glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer"); 1071 | glad_glClear = (PFNGLCLEARPROC)load("glClear"); 1072 | glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); 1073 | glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); 1074 | glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth"); 1075 | glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); 1076 | glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); 1077 | glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); 1078 | glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); 1079 | glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); 1080 | glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); 1081 | glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); 1082 | glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); 1083 | glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp"); 1084 | glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); 1085 | glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); 1086 | glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); 1087 | glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref"); 1088 | glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); 1089 | glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); 1090 | glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); 1091 | glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); 1092 | glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev"); 1093 | glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); 1094 | glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); 1095 | glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); 1096 | glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); 1097 | glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage"); 1098 | glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); 1099 | glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); 1100 | glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv"); 1101 | glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv"); 1102 | glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); 1103 | glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange"); 1104 | glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); 1105 | glad_glNewList = (PFNGLNEWLISTPROC)load("glNewList"); 1106 | glad_glEndList = (PFNGLENDLISTPROC)load("glEndList"); 1107 | glad_glCallList = (PFNGLCALLLISTPROC)load("glCallList"); 1108 | glad_glCallLists = (PFNGLCALLLISTSPROC)load("glCallLists"); 1109 | glad_glDeleteLists = (PFNGLDELETELISTSPROC)load("glDeleteLists"); 1110 | glad_glGenLists = (PFNGLGENLISTSPROC)load("glGenLists"); 1111 | glad_glListBase = (PFNGLLISTBASEPROC)load("glListBase"); 1112 | glad_glBegin = (PFNGLBEGINPROC)load("glBegin"); 1113 | glad_glBitmap = (PFNGLBITMAPPROC)load("glBitmap"); 1114 | glad_glColor3b = (PFNGLCOLOR3BPROC)load("glColor3b"); 1115 | glad_glColor3bv = (PFNGLCOLOR3BVPROC)load("glColor3bv"); 1116 | glad_glColor3d = (PFNGLCOLOR3DPROC)load("glColor3d"); 1117 | glad_glColor3dv = (PFNGLCOLOR3DVPROC)load("glColor3dv"); 1118 | glad_glColor3f = (PFNGLCOLOR3FPROC)load("glColor3f"); 1119 | glad_glColor3fv = (PFNGLCOLOR3FVPROC)load("glColor3fv"); 1120 | glad_glColor3i = (PFNGLCOLOR3IPROC)load("glColor3i"); 1121 | glad_glColor3iv = (PFNGLCOLOR3IVPROC)load("glColor3iv"); 1122 | glad_glColor3s = (PFNGLCOLOR3SPROC)load("glColor3s"); 1123 | glad_glColor3sv = (PFNGLCOLOR3SVPROC)load("glColor3sv"); 1124 | glad_glColor3ub = (PFNGLCOLOR3UBPROC)load("glColor3ub"); 1125 | glad_glColor3ubv = (PFNGLCOLOR3UBVPROC)load("glColor3ubv"); 1126 | glad_glColor3ui = (PFNGLCOLOR3UIPROC)load("glColor3ui"); 1127 | glad_glColor3uiv = (PFNGLCOLOR3UIVPROC)load("glColor3uiv"); 1128 | glad_glColor3us = (PFNGLCOLOR3USPROC)load("glColor3us"); 1129 | glad_glColor3usv = (PFNGLCOLOR3USVPROC)load("glColor3usv"); 1130 | glad_glColor4b = (PFNGLCOLOR4BPROC)load("glColor4b"); 1131 | glad_glColor4bv = (PFNGLCOLOR4BVPROC)load("glColor4bv"); 1132 | glad_glColor4d = (PFNGLCOLOR4DPROC)load("glColor4d"); 1133 | glad_glColor4dv = (PFNGLCOLOR4DVPROC)load("glColor4dv"); 1134 | glad_glColor4f = (PFNGLCOLOR4FPROC)load("glColor4f"); 1135 | glad_glColor4fv = (PFNGLCOLOR4FVPROC)load("glColor4fv"); 1136 | glad_glColor4i = (PFNGLCOLOR4IPROC)load("glColor4i"); 1137 | glad_glColor4iv = (PFNGLCOLOR4IVPROC)load("glColor4iv"); 1138 | glad_glColor4s = (PFNGLCOLOR4SPROC)load("glColor4s"); 1139 | glad_glColor4sv = (PFNGLCOLOR4SVPROC)load("glColor4sv"); 1140 | glad_glColor4ub = (PFNGLCOLOR4UBPROC)load("glColor4ub"); 1141 | glad_glColor4ubv = (PFNGLCOLOR4UBVPROC)load("glColor4ubv"); 1142 | glad_glColor4ui = (PFNGLCOLOR4UIPROC)load("glColor4ui"); 1143 | glad_glColor4uiv = (PFNGLCOLOR4UIVPROC)load("glColor4uiv"); 1144 | glad_glColor4us = (PFNGLCOLOR4USPROC)load("glColor4us"); 1145 | glad_glColor4usv = (PFNGLCOLOR4USVPROC)load("glColor4usv"); 1146 | glad_glEdgeFlag = (PFNGLEDGEFLAGPROC)load("glEdgeFlag"); 1147 | glad_glEdgeFlagv = (PFNGLEDGEFLAGVPROC)load("glEdgeFlagv"); 1148 | glad_glEnd = (PFNGLENDPROC)load("glEnd"); 1149 | glad_glIndexd = (PFNGLINDEXDPROC)load("glIndexd"); 1150 | glad_glIndexdv = (PFNGLINDEXDVPROC)load("glIndexdv"); 1151 | glad_glIndexf = (PFNGLINDEXFPROC)load("glIndexf"); 1152 | glad_glIndexfv = (PFNGLINDEXFVPROC)load("glIndexfv"); 1153 | glad_glIndexi = (PFNGLINDEXIPROC)load("glIndexi"); 1154 | glad_glIndexiv = (PFNGLINDEXIVPROC)load("glIndexiv"); 1155 | glad_glIndexs = (PFNGLINDEXSPROC)load("glIndexs"); 1156 | glad_glIndexsv = (PFNGLINDEXSVPROC)load("glIndexsv"); 1157 | glad_glNormal3b = (PFNGLNORMAL3BPROC)load("glNormal3b"); 1158 | glad_glNormal3bv = (PFNGLNORMAL3BVPROC)load("glNormal3bv"); 1159 | glad_glNormal3d = (PFNGLNORMAL3DPROC)load("glNormal3d"); 1160 | glad_glNormal3dv = (PFNGLNORMAL3DVPROC)load("glNormal3dv"); 1161 | glad_glNormal3f = (PFNGLNORMAL3FPROC)load("glNormal3f"); 1162 | glad_glNormal3fv = (PFNGLNORMAL3FVPROC)load("glNormal3fv"); 1163 | glad_glNormal3i = (PFNGLNORMAL3IPROC)load("glNormal3i"); 1164 | glad_glNormal3iv = (PFNGLNORMAL3IVPROC)load("glNormal3iv"); 1165 | glad_glNormal3s = (PFNGLNORMAL3SPROC)load("glNormal3s"); 1166 | glad_glNormal3sv = (PFNGLNORMAL3SVPROC)load("glNormal3sv"); 1167 | glad_glRasterPos2d = (PFNGLRASTERPOS2DPROC)load("glRasterPos2d"); 1168 | glad_glRasterPos2dv = (PFNGLRASTERPOS2DVPROC)load("glRasterPos2dv"); 1169 | glad_glRasterPos2f = (PFNGLRASTERPOS2FPROC)load("glRasterPos2f"); 1170 | glad_glRasterPos2fv = (PFNGLRASTERPOS2FVPROC)load("glRasterPos2fv"); 1171 | glad_glRasterPos2i = (PFNGLRASTERPOS2IPROC)load("glRasterPos2i"); 1172 | glad_glRasterPos2iv = (PFNGLRASTERPOS2IVPROC)load("glRasterPos2iv"); 1173 | glad_glRasterPos2s = (PFNGLRASTERPOS2SPROC)load("glRasterPos2s"); 1174 | glad_glRasterPos2sv = (PFNGLRASTERPOS2SVPROC)load("glRasterPos2sv"); 1175 | glad_glRasterPos3d = (PFNGLRASTERPOS3DPROC)load("glRasterPos3d"); 1176 | glad_glRasterPos3dv = (PFNGLRASTERPOS3DVPROC)load("glRasterPos3dv"); 1177 | glad_glRasterPos3f = (PFNGLRASTERPOS3FPROC)load("glRasterPos3f"); 1178 | glad_glRasterPos3fv = (PFNGLRASTERPOS3FVPROC)load("glRasterPos3fv"); 1179 | glad_glRasterPos3i = (PFNGLRASTERPOS3IPROC)load("glRasterPos3i"); 1180 | glad_glRasterPos3iv = (PFNGLRASTERPOS3IVPROC)load("glRasterPos3iv"); 1181 | glad_glRasterPos3s = (PFNGLRASTERPOS3SPROC)load("glRasterPos3s"); 1182 | glad_glRasterPos3sv = (PFNGLRASTERPOS3SVPROC)load("glRasterPos3sv"); 1183 | glad_glRasterPos4d = (PFNGLRASTERPOS4DPROC)load("glRasterPos4d"); 1184 | glad_glRasterPos4dv = (PFNGLRASTERPOS4DVPROC)load("glRasterPos4dv"); 1185 | glad_glRasterPos4f = (PFNGLRASTERPOS4FPROC)load("glRasterPos4f"); 1186 | glad_glRasterPos4fv = (PFNGLRASTERPOS4FVPROC)load("glRasterPos4fv"); 1187 | glad_glRasterPos4i = (PFNGLRASTERPOS4IPROC)load("glRasterPos4i"); 1188 | glad_glRasterPos4iv = (PFNGLRASTERPOS4IVPROC)load("glRasterPos4iv"); 1189 | glad_glRasterPos4s = (PFNGLRASTERPOS4SPROC)load("glRasterPos4s"); 1190 | glad_glRasterPos4sv = (PFNGLRASTERPOS4SVPROC)load("glRasterPos4sv"); 1191 | glad_glRectd = (PFNGLRECTDPROC)load("glRectd"); 1192 | glad_glRectdv = (PFNGLRECTDVPROC)load("glRectdv"); 1193 | glad_glRectf = (PFNGLRECTFPROC)load("glRectf"); 1194 | glad_glRectfv = (PFNGLRECTFVPROC)load("glRectfv"); 1195 | glad_glRecti = (PFNGLRECTIPROC)load("glRecti"); 1196 | glad_glRectiv = (PFNGLRECTIVPROC)load("glRectiv"); 1197 | glad_glRects = (PFNGLRECTSPROC)load("glRects"); 1198 | glad_glRectsv = (PFNGLRECTSVPROC)load("glRectsv"); 1199 | glad_glTexCoord1d = (PFNGLTEXCOORD1DPROC)load("glTexCoord1d"); 1200 | glad_glTexCoord1dv = (PFNGLTEXCOORD1DVPROC)load("glTexCoord1dv"); 1201 | glad_glTexCoord1f = (PFNGLTEXCOORD1FPROC)load("glTexCoord1f"); 1202 | glad_glTexCoord1fv = (PFNGLTEXCOORD1FVPROC)load("glTexCoord1fv"); 1203 | glad_glTexCoord1i = (PFNGLTEXCOORD1IPROC)load("glTexCoord1i"); 1204 | glad_glTexCoord1iv = (PFNGLTEXCOORD1IVPROC)load("glTexCoord1iv"); 1205 | glad_glTexCoord1s = (PFNGLTEXCOORD1SPROC)load("glTexCoord1s"); 1206 | glad_glTexCoord1sv = (PFNGLTEXCOORD1SVPROC)load("glTexCoord1sv"); 1207 | glad_glTexCoord2d = (PFNGLTEXCOORD2DPROC)load("glTexCoord2d"); 1208 | glad_glTexCoord2dv = (PFNGLTEXCOORD2DVPROC)load("glTexCoord2dv"); 1209 | glad_glTexCoord2f = (PFNGLTEXCOORD2FPROC)load("glTexCoord2f"); 1210 | glad_glTexCoord2fv = (PFNGLTEXCOORD2FVPROC)load("glTexCoord2fv"); 1211 | glad_glTexCoord2i = (PFNGLTEXCOORD2IPROC)load("glTexCoord2i"); 1212 | glad_glTexCoord2iv = (PFNGLTEXCOORD2IVPROC)load("glTexCoord2iv"); 1213 | glad_glTexCoord2s = (PFNGLTEXCOORD2SPROC)load("glTexCoord2s"); 1214 | glad_glTexCoord2sv = (PFNGLTEXCOORD2SVPROC)load("glTexCoord2sv"); 1215 | glad_glTexCoord3d = (PFNGLTEXCOORD3DPROC)load("glTexCoord3d"); 1216 | glad_glTexCoord3dv = (PFNGLTEXCOORD3DVPROC)load("glTexCoord3dv"); 1217 | glad_glTexCoord3f = (PFNGLTEXCOORD3FPROC)load("glTexCoord3f"); 1218 | glad_glTexCoord3fv = (PFNGLTEXCOORD3FVPROC)load("glTexCoord3fv"); 1219 | glad_glTexCoord3i = (PFNGLTEXCOORD3IPROC)load("glTexCoord3i"); 1220 | glad_glTexCoord3iv = (PFNGLTEXCOORD3IVPROC)load("glTexCoord3iv"); 1221 | glad_glTexCoord3s = (PFNGLTEXCOORD3SPROC)load("glTexCoord3s"); 1222 | glad_glTexCoord3sv = (PFNGLTEXCOORD3SVPROC)load("glTexCoord3sv"); 1223 | glad_glTexCoord4d = (PFNGLTEXCOORD4DPROC)load("glTexCoord4d"); 1224 | glad_glTexCoord4dv = (PFNGLTEXCOORD4DVPROC)load("glTexCoord4dv"); 1225 | glad_glTexCoord4f = (PFNGLTEXCOORD4FPROC)load("glTexCoord4f"); 1226 | glad_glTexCoord4fv = (PFNGLTEXCOORD4FVPROC)load("glTexCoord4fv"); 1227 | glad_glTexCoord4i = (PFNGLTEXCOORD4IPROC)load("glTexCoord4i"); 1228 | glad_glTexCoord4iv = (PFNGLTEXCOORD4IVPROC)load("glTexCoord4iv"); 1229 | glad_glTexCoord4s = (PFNGLTEXCOORD4SPROC)load("glTexCoord4s"); 1230 | glad_glTexCoord4sv = (PFNGLTEXCOORD4SVPROC)load("glTexCoord4sv"); 1231 | glad_glVertex2d = (PFNGLVERTEX2DPROC)load("glVertex2d"); 1232 | glad_glVertex2dv = (PFNGLVERTEX2DVPROC)load("glVertex2dv"); 1233 | glad_glVertex2f = (PFNGLVERTEX2FPROC)load("glVertex2f"); 1234 | glad_glVertex2fv = (PFNGLVERTEX2FVPROC)load("glVertex2fv"); 1235 | glad_glVertex2i = (PFNGLVERTEX2IPROC)load("glVertex2i"); 1236 | glad_glVertex2iv = (PFNGLVERTEX2IVPROC)load("glVertex2iv"); 1237 | glad_glVertex2s = (PFNGLVERTEX2SPROC)load("glVertex2s"); 1238 | glad_glVertex2sv = (PFNGLVERTEX2SVPROC)load("glVertex2sv"); 1239 | glad_glVertex3d = (PFNGLVERTEX3DPROC)load("glVertex3d"); 1240 | glad_glVertex3dv = (PFNGLVERTEX3DVPROC)load("glVertex3dv"); 1241 | glad_glVertex3f = (PFNGLVERTEX3FPROC)load("glVertex3f"); 1242 | glad_glVertex3fv = (PFNGLVERTEX3FVPROC)load("glVertex3fv"); 1243 | glad_glVertex3i = (PFNGLVERTEX3IPROC)load("glVertex3i"); 1244 | glad_glVertex3iv = (PFNGLVERTEX3IVPROC)load("glVertex3iv"); 1245 | glad_glVertex3s = (PFNGLVERTEX3SPROC)load("glVertex3s"); 1246 | glad_glVertex3sv = (PFNGLVERTEX3SVPROC)load("glVertex3sv"); 1247 | glad_glVertex4d = (PFNGLVERTEX4DPROC)load("glVertex4d"); 1248 | glad_glVertex4dv = (PFNGLVERTEX4DVPROC)load("glVertex4dv"); 1249 | glad_glVertex4f = (PFNGLVERTEX4FPROC)load("glVertex4f"); 1250 | glad_glVertex4fv = (PFNGLVERTEX4FVPROC)load("glVertex4fv"); 1251 | glad_glVertex4i = (PFNGLVERTEX4IPROC)load("glVertex4i"); 1252 | glad_glVertex4iv = (PFNGLVERTEX4IVPROC)load("glVertex4iv"); 1253 | glad_glVertex4s = (PFNGLVERTEX4SPROC)load("glVertex4s"); 1254 | glad_glVertex4sv = (PFNGLVERTEX4SVPROC)load("glVertex4sv"); 1255 | glad_glClipPlane = (PFNGLCLIPPLANEPROC)load("glClipPlane"); 1256 | glad_glColorMaterial = (PFNGLCOLORMATERIALPROC)load("glColorMaterial"); 1257 | glad_glFogf = (PFNGLFOGFPROC)load("glFogf"); 1258 | glad_glFogfv = (PFNGLFOGFVPROC)load("glFogfv"); 1259 | glad_glFogi = (PFNGLFOGIPROC)load("glFogi"); 1260 | glad_glFogiv = (PFNGLFOGIVPROC)load("glFogiv"); 1261 | glad_glLightf = (PFNGLLIGHTFPROC)load("glLightf"); 1262 | glad_glLightfv = (PFNGLLIGHTFVPROC)load("glLightfv"); 1263 | glad_glLighti = (PFNGLLIGHTIPROC)load("glLighti"); 1264 | glad_glLightiv = (PFNGLLIGHTIVPROC)load("glLightiv"); 1265 | glad_glLightModelf = (PFNGLLIGHTMODELFPROC)load("glLightModelf"); 1266 | glad_glLightModelfv = (PFNGLLIGHTMODELFVPROC)load("glLightModelfv"); 1267 | glad_glLightModeli = (PFNGLLIGHTMODELIPROC)load("glLightModeli"); 1268 | glad_glLightModeliv = (PFNGLLIGHTMODELIVPROC)load("glLightModeliv"); 1269 | glad_glLineStipple = (PFNGLLINESTIPPLEPROC)load("glLineStipple"); 1270 | glad_glMaterialf = (PFNGLMATERIALFPROC)load("glMaterialf"); 1271 | glad_glMaterialfv = (PFNGLMATERIALFVPROC)load("glMaterialfv"); 1272 | glad_glMateriali = (PFNGLMATERIALIPROC)load("glMateriali"); 1273 | glad_glMaterialiv = (PFNGLMATERIALIVPROC)load("glMaterialiv"); 1274 | glad_glPolygonStipple = (PFNGLPOLYGONSTIPPLEPROC)load("glPolygonStipple"); 1275 | glad_glShadeModel = (PFNGLSHADEMODELPROC)load("glShadeModel"); 1276 | glad_glTexEnvf = (PFNGLTEXENVFPROC)load("glTexEnvf"); 1277 | glad_glTexEnvfv = (PFNGLTEXENVFVPROC)load("glTexEnvfv"); 1278 | glad_glTexEnvi = (PFNGLTEXENVIPROC)load("glTexEnvi"); 1279 | glad_glTexEnviv = (PFNGLTEXENVIVPROC)load("glTexEnviv"); 1280 | glad_glTexGend = (PFNGLTEXGENDPROC)load("glTexGend"); 1281 | glad_glTexGendv = (PFNGLTEXGENDVPROC)load("glTexGendv"); 1282 | glad_glTexGenf = (PFNGLTEXGENFPROC)load("glTexGenf"); 1283 | glad_glTexGenfv = (PFNGLTEXGENFVPROC)load("glTexGenfv"); 1284 | glad_glTexGeni = (PFNGLTEXGENIPROC)load("glTexGeni"); 1285 | glad_glTexGeniv = (PFNGLTEXGENIVPROC)load("glTexGeniv"); 1286 | glad_glFeedbackBuffer = (PFNGLFEEDBACKBUFFERPROC)load("glFeedbackBuffer"); 1287 | glad_glSelectBuffer = (PFNGLSELECTBUFFERPROC)load("glSelectBuffer"); 1288 | glad_glRenderMode = (PFNGLRENDERMODEPROC)load("glRenderMode"); 1289 | glad_glInitNames = (PFNGLINITNAMESPROC)load("glInitNames"); 1290 | glad_glLoadName = (PFNGLLOADNAMEPROC)load("glLoadName"); 1291 | glad_glPassThrough = (PFNGLPASSTHROUGHPROC)load("glPassThrough"); 1292 | glad_glPopName = (PFNGLPOPNAMEPROC)load("glPopName"); 1293 | glad_glPushName = (PFNGLPUSHNAMEPROC)load("glPushName"); 1294 | glad_glClearAccum = (PFNGLCLEARACCUMPROC)load("glClearAccum"); 1295 | glad_glClearIndex = (PFNGLCLEARINDEXPROC)load("glClearIndex"); 1296 | glad_glIndexMask = (PFNGLINDEXMASKPROC)load("glIndexMask"); 1297 | glad_glAccum = (PFNGLACCUMPROC)load("glAccum"); 1298 | glad_glPopAttrib = (PFNGLPOPATTRIBPROC)load("glPopAttrib"); 1299 | glad_glPushAttrib = (PFNGLPUSHATTRIBPROC)load("glPushAttrib"); 1300 | glad_glMap1d = (PFNGLMAP1DPROC)load("glMap1d"); 1301 | glad_glMap1f = (PFNGLMAP1FPROC)load("glMap1f"); 1302 | glad_glMap2d = (PFNGLMAP2DPROC)load("glMap2d"); 1303 | glad_glMap2f = (PFNGLMAP2FPROC)load("glMap2f"); 1304 | glad_glMapGrid1d = (PFNGLMAPGRID1DPROC)load("glMapGrid1d"); 1305 | glad_glMapGrid1f = (PFNGLMAPGRID1FPROC)load("glMapGrid1f"); 1306 | glad_glMapGrid2d = (PFNGLMAPGRID2DPROC)load("glMapGrid2d"); 1307 | glad_glMapGrid2f = (PFNGLMAPGRID2FPROC)load("glMapGrid2f"); 1308 | glad_glEvalCoord1d = (PFNGLEVALCOORD1DPROC)load("glEvalCoord1d"); 1309 | glad_glEvalCoord1dv = (PFNGLEVALCOORD1DVPROC)load("glEvalCoord1dv"); 1310 | glad_glEvalCoord1f = (PFNGLEVALCOORD1FPROC)load("glEvalCoord1f"); 1311 | glad_glEvalCoord1fv = (PFNGLEVALCOORD1FVPROC)load("glEvalCoord1fv"); 1312 | glad_glEvalCoord2d = (PFNGLEVALCOORD2DPROC)load("glEvalCoord2d"); 1313 | glad_glEvalCoord2dv = (PFNGLEVALCOORD2DVPROC)load("glEvalCoord2dv"); 1314 | glad_glEvalCoord2f = (PFNGLEVALCOORD2FPROC)load("glEvalCoord2f"); 1315 | glad_glEvalCoord2fv = (PFNGLEVALCOORD2FVPROC)load("glEvalCoord2fv"); 1316 | glad_glEvalMesh1 = (PFNGLEVALMESH1PROC)load("glEvalMesh1"); 1317 | glad_glEvalPoint1 = (PFNGLEVALPOINT1PROC)load("glEvalPoint1"); 1318 | glad_glEvalMesh2 = (PFNGLEVALMESH2PROC)load("glEvalMesh2"); 1319 | glad_glEvalPoint2 = (PFNGLEVALPOINT2PROC)load("glEvalPoint2"); 1320 | glad_glAlphaFunc = (PFNGLALPHAFUNCPROC)load("glAlphaFunc"); 1321 | glad_glPixelZoom = (PFNGLPIXELZOOMPROC)load("glPixelZoom"); 1322 | glad_glPixelTransferf = (PFNGLPIXELTRANSFERFPROC)load("glPixelTransferf"); 1323 | glad_glPixelTransferi = (PFNGLPIXELTRANSFERIPROC)load("glPixelTransferi"); 1324 | glad_glPixelMapfv = (PFNGLPIXELMAPFVPROC)load("glPixelMapfv"); 1325 | glad_glPixelMapuiv = (PFNGLPIXELMAPUIVPROC)load("glPixelMapuiv"); 1326 | glad_glPixelMapusv = (PFNGLPIXELMAPUSVPROC)load("glPixelMapusv"); 1327 | glad_glCopyPixels = (PFNGLCOPYPIXELSPROC)load("glCopyPixels"); 1328 | glad_glDrawPixels = (PFNGLDRAWPIXELSPROC)load("glDrawPixels"); 1329 | glad_glGetClipPlane = (PFNGLGETCLIPPLANEPROC)load("glGetClipPlane"); 1330 | glad_glGetLightfv = (PFNGLGETLIGHTFVPROC)load("glGetLightfv"); 1331 | glad_glGetLightiv = (PFNGLGETLIGHTIVPROC)load("glGetLightiv"); 1332 | glad_glGetMapdv = (PFNGLGETMAPDVPROC)load("glGetMapdv"); 1333 | glad_glGetMapfv = (PFNGLGETMAPFVPROC)load("glGetMapfv"); 1334 | glad_glGetMapiv = (PFNGLGETMAPIVPROC)load("glGetMapiv"); 1335 | glad_glGetMaterialfv = (PFNGLGETMATERIALFVPROC)load("glGetMaterialfv"); 1336 | glad_glGetMaterialiv = (PFNGLGETMATERIALIVPROC)load("glGetMaterialiv"); 1337 | glad_glGetPixelMapfv = (PFNGLGETPIXELMAPFVPROC)load("glGetPixelMapfv"); 1338 | glad_glGetPixelMapuiv = (PFNGLGETPIXELMAPUIVPROC)load("glGetPixelMapuiv"); 1339 | glad_glGetPixelMapusv = (PFNGLGETPIXELMAPUSVPROC)load("glGetPixelMapusv"); 1340 | glad_glGetPolygonStipple = (PFNGLGETPOLYGONSTIPPLEPROC)load("glGetPolygonStipple"); 1341 | glad_glGetTexEnvfv = (PFNGLGETTEXENVFVPROC)load("glGetTexEnvfv"); 1342 | glad_glGetTexEnviv = (PFNGLGETTEXENVIVPROC)load("glGetTexEnviv"); 1343 | glad_glGetTexGendv = (PFNGLGETTEXGENDVPROC)load("glGetTexGendv"); 1344 | glad_glGetTexGenfv = (PFNGLGETTEXGENFVPROC)load("glGetTexGenfv"); 1345 | glad_glGetTexGeniv = (PFNGLGETTEXGENIVPROC)load("glGetTexGeniv"); 1346 | glad_glIsList = (PFNGLISLISTPROC)load("glIsList"); 1347 | glad_glFrustum = (PFNGLFRUSTUMPROC)load("glFrustum"); 1348 | glad_glLoadIdentity = (PFNGLLOADIDENTITYPROC)load("glLoadIdentity"); 1349 | glad_glLoadMatrixf = (PFNGLLOADMATRIXFPROC)load("glLoadMatrixf"); 1350 | glad_glLoadMatrixd = (PFNGLLOADMATRIXDPROC)load("glLoadMatrixd"); 1351 | glad_glMatrixMode = (PFNGLMATRIXMODEPROC)load("glMatrixMode"); 1352 | glad_glMultMatrixf = (PFNGLMULTMATRIXFPROC)load("glMultMatrixf"); 1353 | glad_glMultMatrixd = (PFNGLMULTMATRIXDPROC)load("glMultMatrixd"); 1354 | glad_glOrtho = (PFNGLORTHOPROC)load("glOrtho"); 1355 | glad_glPopMatrix = (PFNGLPOPMATRIXPROC)load("glPopMatrix"); 1356 | glad_glPushMatrix = (PFNGLPUSHMATRIXPROC)load("glPushMatrix"); 1357 | glad_glRotated = (PFNGLROTATEDPROC)load("glRotated"); 1358 | glad_glRotatef = (PFNGLROTATEFPROC)load("glRotatef"); 1359 | glad_glScaled = (PFNGLSCALEDPROC)load("glScaled"); 1360 | glad_glScalef = (PFNGLSCALEFPROC)load("glScalef"); 1361 | glad_glTranslated = (PFNGLTRANSLATEDPROC)load("glTranslated"); 1362 | glad_glTranslatef = (PFNGLTRANSLATEFPROC)load("glTranslatef"); 1363 | } 1364 | static void load_GL_VERSION_1_1(GLADloadproc load) { 1365 | if(!GLAD_GL_VERSION_1_1) return; 1366 | glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); 1367 | glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); 1368 | glad_glGetPointerv = (PFNGLGETPOINTERVPROC)load("glGetPointerv"); 1369 | glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); 1370 | glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D"); 1371 | glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); 1372 | glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D"); 1373 | glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); 1374 | glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D"); 1375 | glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); 1376 | glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); 1377 | glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); 1378 | glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); 1379 | glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); 1380 | glad_glArrayElement = (PFNGLARRAYELEMENTPROC)load("glArrayElement"); 1381 | glad_glColorPointer = (PFNGLCOLORPOINTERPROC)load("glColorPointer"); 1382 | glad_glDisableClientState = (PFNGLDISABLECLIENTSTATEPROC)load("glDisableClientState"); 1383 | glad_glEdgeFlagPointer = (PFNGLEDGEFLAGPOINTERPROC)load("glEdgeFlagPointer"); 1384 | glad_glEnableClientState = (PFNGLENABLECLIENTSTATEPROC)load("glEnableClientState"); 1385 | glad_glIndexPointer = (PFNGLINDEXPOINTERPROC)load("glIndexPointer"); 1386 | glad_glInterleavedArrays = (PFNGLINTERLEAVEDARRAYSPROC)load("glInterleavedArrays"); 1387 | glad_glNormalPointer = (PFNGLNORMALPOINTERPROC)load("glNormalPointer"); 1388 | glad_glTexCoordPointer = (PFNGLTEXCOORDPOINTERPROC)load("glTexCoordPointer"); 1389 | glad_glVertexPointer = (PFNGLVERTEXPOINTERPROC)load("glVertexPointer"); 1390 | glad_glAreTexturesResident = (PFNGLARETEXTURESRESIDENTPROC)load("glAreTexturesResident"); 1391 | glad_glPrioritizeTextures = (PFNGLPRIORITIZETEXTURESPROC)load("glPrioritizeTextures"); 1392 | glad_glIndexub = (PFNGLINDEXUBPROC)load("glIndexub"); 1393 | glad_glIndexubv = (PFNGLINDEXUBVPROC)load("glIndexubv"); 1394 | glad_glPopClientAttrib = (PFNGLPOPCLIENTATTRIBPROC)load("glPopClientAttrib"); 1395 | glad_glPushClientAttrib = (PFNGLPUSHCLIENTATTRIBPROC)load("glPushClientAttrib"); 1396 | } 1397 | static void load_GL_VERSION_1_2(GLADloadproc load) { 1398 | if(!GLAD_GL_VERSION_1_2) return; 1399 | glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); 1400 | glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); 1401 | glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); 1402 | glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); 1403 | } 1404 | static void load_GL_VERSION_1_3(GLADloadproc load) { 1405 | if(!GLAD_GL_VERSION_1_3) return; 1406 | glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); 1407 | glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); 1408 | glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); 1409 | glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); 1410 | glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D"); 1411 | glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); 1412 | glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); 1413 | glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D"); 1414 | glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage"); 1415 | glad_glClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC)load("glClientActiveTexture"); 1416 | glad_glMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC)load("glMultiTexCoord1d"); 1417 | glad_glMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC)load("glMultiTexCoord1dv"); 1418 | glad_glMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC)load("glMultiTexCoord1f"); 1419 | glad_glMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC)load("glMultiTexCoord1fv"); 1420 | glad_glMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC)load("glMultiTexCoord1i"); 1421 | glad_glMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC)load("glMultiTexCoord1iv"); 1422 | glad_glMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC)load("glMultiTexCoord1s"); 1423 | glad_glMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC)load("glMultiTexCoord1sv"); 1424 | glad_glMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC)load("glMultiTexCoord2d"); 1425 | glad_glMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC)load("glMultiTexCoord2dv"); 1426 | glad_glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC)load("glMultiTexCoord2f"); 1427 | glad_glMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC)load("glMultiTexCoord2fv"); 1428 | glad_glMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC)load("glMultiTexCoord2i"); 1429 | glad_glMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC)load("glMultiTexCoord2iv"); 1430 | glad_glMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC)load("glMultiTexCoord2s"); 1431 | glad_glMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC)load("glMultiTexCoord2sv"); 1432 | glad_glMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC)load("glMultiTexCoord3d"); 1433 | glad_glMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC)load("glMultiTexCoord3dv"); 1434 | glad_glMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC)load("glMultiTexCoord3f"); 1435 | glad_glMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC)load("glMultiTexCoord3fv"); 1436 | glad_glMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC)load("glMultiTexCoord3i"); 1437 | glad_glMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC)load("glMultiTexCoord3iv"); 1438 | glad_glMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC)load("glMultiTexCoord3s"); 1439 | glad_glMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC)load("glMultiTexCoord3sv"); 1440 | glad_glMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC)load("glMultiTexCoord4d"); 1441 | glad_glMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC)load("glMultiTexCoord4dv"); 1442 | glad_glMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC)load("glMultiTexCoord4f"); 1443 | glad_glMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC)load("glMultiTexCoord4fv"); 1444 | glad_glMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC)load("glMultiTexCoord4i"); 1445 | glad_glMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC)load("glMultiTexCoord4iv"); 1446 | glad_glMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC)load("glMultiTexCoord4s"); 1447 | glad_glMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC)load("glMultiTexCoord4sv"); 1448 | glad_glLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC)load("glLoadTransposeMatrixf"); 1449 | glad_glLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC)load("glLoadTransposeMatrixd"); 1450 | glad_glMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC)load("glMultTransposeMatrixf"); 1451 | glad_glMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC)load("glMultTransposeMatrixd"); 1452 | } 1453 | static void load_GL_VERSION_1_4(GLADloadproc load) { 1454 | if(!GLAD_GL_VERSION_1_4) return; 1455 | glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); 1456 | glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays"); 1457 | glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements"); 1458 | glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf"); 1459 | glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv"); 1460 | glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri"); 1461 | glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv"); 1462 | glad_glFogCoordf = (PFNGLFOGCOORDFPROC)load("glFogCoordf"); 1463 | glad_glFogCoordfv = (PFNGLFOGCOORDFVPROC)load("glFogCoordfv"); 1464 | glad_glFogCoordd = (PFNGLFOGCOORDDPROC)load("glFogCoordd"); 1465 | glad_glFogCoorddv = (PFNGLFOGCOORDDVPROC)load("glFogCoorddv"); 1466 | glad_glFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC)load("glFogCoordPointer"); 1467 | glad_glSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC)load("glSecondaryColor3b"); 1468 | glad_glSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC)load("glSecondaryColor3bv"); 1469 | glad_glSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC)load("glSecondaryColor3d"); 1470 | glad_glSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC)load("glSecondaryColor3dv"); 1471 | glad_glSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC)load("glSecondaryColor3f"); 1472 | glad_glSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC)load("glSecondaryColor3fv"); 1473 | glad_glSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC)load("glSecondaryColor3i"); 1474 | glad_glSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC)load("glSecondaryColor3iv"); 1475 | glad_glSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC)load("glSecondaryColor3s"); 1476 | glad_glSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC)load("glSecondaryColor3sv"); 1477 | glad_glSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC)load("glSecondaryColor3ub"); 1478 | glad_glSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC)load("glSecondaryColor3ubv"); 1479 | glad_glSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC)load("glSecondaryColor3ui"); 1480 | glad_glSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC)load("glSecondaryColor3uiv"); 1481 | glad_glSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC)load("glSecondaryColor3us"); 1482 | glad_glSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC)load("glSecondaryColor3usv"); 1483 | glad_glSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC)load("glSecondaryColorPointer"); 1484 | glad_glWindowPos2d = (PFNGLWINDOWPOS2DPROC)load("glWindowPos2d"); 1485 | glad_glWindowPos2dv = (PFNGLWINDOWPOS2DVPROC)load("glWindowPos2dv"); 1486 | glad_glWindowPos2f = (PFNGLWINDOWPOS2FPROC)load("glWindowPos2f"); 1487 | glad_glWindowPos2fv = (PFNGLWINDOWPOS2FVPROC)load("glWindowPos2fv"); 1488 | glad_glWindowPos2i = (PFNGLWINDOWPOS2IPROC)load("glWindowPos2i"); 1489 | glad_glWindowPos2iv = (PFNGLWINDOWPOS2IVPROC)load("glWindowPos2iv"); 1490 | glad_glWindowPos2s = (PFNGLWINDOWPOS2SPROC)load("glWindowPos2s"); 1491 | glad_glWindowPos2sv = (PFNGLWINDOWPOS2SVPROC)load("glWindowPos2sv"); 1492 | glad_glWindowPos3d = (PFNGLWINDOWPOS3DPROC)load("glWindowPos3d"); 1493 | glad_glWindowPos3dv = (PFNGLWINDOWPOS3DVPROC)load("glWindowPos3dv"); 1494 | glad_glWindowPos3f = (PFNGLWINDOWPOS3FPROC)load("glWindowPos3f"); 1495 | glad_glWindowPos3fv = (PFNGLWINDOWPOS3FVPROC)load("glWindowPos3fv"); 1496 | glad_glWindowPos3i = (PFNGLWINDOWPOS3IPROC)load("glWindowPos3i"); 1497 | glad_glWindowPos3iv = (PFNGLWINDOWPOS3IVPROC)load("glWindowPos3iv"); 1498 | glad_glWindowPos3s = (PFNGLWINDOWPOS3SPROC)load("glWindowPos3s"); 1499 | glad_glWindowPos3sv = (PFNGLWINDOWPOS3SVPROC)load("glWindowPos3sv"); 1500 | glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); 1501 | glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); 1502 | } 1503 | static void load_GL_VERSION_1_5(GLADloadproc load) { 1504 | if(!GLAD_GL_VERSION_1_5) return; 1505 | glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); 1506 | glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); 1507 | glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); 1508 | glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery"); 1509 | glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery"); 1510 | glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv"); 1511 | glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv"); 1512 | glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); 1513 | glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); 1514 | glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); 1515 | glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); 1516 | glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); 1517 | glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); 1518 | glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); 1519 | glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData"); 1520 | glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer"); 1521 | glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); 1522 | glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); 1523 | glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); 1524 | } 1525 | static void load_GL_VERSION_2_0(GLADloadproc load) { 1526 | if(!GLAD_GL_VERSION_2_0) return; 1527 | glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); 1528 | glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); 1529 | glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); 1530 | glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); 1531 | glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); 1532 | glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); 1533 | glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); 1534 | glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); 1535 | glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); 1536 | glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); 1537 | glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); 1538 | glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); 1539 | glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); 1540 | glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); 1541 | glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); 1542 | glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); 1543 | glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); 1544 | glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); 1545 | glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); 1546 | glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); 1547 | glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); 1548 | glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); 1549 | glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); 1550 | glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); 1551 | glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); 1552 | glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); 1553 | glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); 1554 | glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv"); 1555 | glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); 1556 | glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); 1557 | glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); 1558 | glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); 1559 | glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); 1560 | glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); 1561 | glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); 1562 | glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); 1563 | glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); 1564 | glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); 1565 | glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); 1566 | glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); 1567 | glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); 1568 | glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); 1569 | glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); 1570 | glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); 1571 | glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); 1572 | glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); 1573 | glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); 1574 | glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); 1575 | glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); 1576 | glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); 1577 | glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); 1578 | glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); 1579 | glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); 1580 | glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); 1581 | glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); 1582 | glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); 1583 | glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d"); 1584 | glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv"); 1585 | glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); 1586 | glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); 1587 | glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s"); 1588 | glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv"); 1589 | glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d"); 1590 | glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv"); 1591 | glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); 1592 | glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); 1593 | glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s"); 1594 | glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv"); 1595 | glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d"); 1596 | glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv"); 1597 | glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); 1598 | glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); 1599 | glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s"); 1600 | glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv"); 1601 | glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv"); 1602 | glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv"); 1603 | glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv"); 1604 | glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub"); 1605 | glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv"); 1606 | glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv"); 1607 | glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv"); 1608 | glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv"); 1609 | glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d"); 1610 | glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv"); 1611 | glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); 1612 | glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); 1613 | glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv"); 1614 | glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s"); 1615 | glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv"); 1616 | glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv"); 1617 | glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv"); 1618 | glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv"); 1619 | glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); 1620 | } 1621 | static void load_GL_VERSION_2_1(GLADloadproc load) { 1622 | if(!GLAD_GL_VERSION_2_1) return; 1623 | glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); 1624 | glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); 1625 | glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); 1626 | glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv"); 1627 | glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); 1628 | glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); 1629 | } 1630 | static void load_GL_VERSION_3_0(GLADloadproc load) { 1631 | if(!GLAD_GL_VERSION_3_0) return; 1632 | glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); 1633 | glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); 1634 | glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); 1635 | glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei"); 1636 | glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei"); 1637 | glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi"); 1638 | glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback"); 1639 | glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback"); 1640 | glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); 1641 | glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); 1642 | glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings"); 1643 | glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying"); 1644 | glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor"); 1645 | glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender"); 1646 | glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender"); 1647 | glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); 1648 | glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); 1649 | glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); 1650 | glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i"); 1651 | glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i"); 1652 | glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i"); 1653 | glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); 1654 | glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui"); 1655 | glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui"); 1656 | glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui"); 1657 | glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); 1658 | glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv"); 1659 | glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv"); 1660 | glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv"); 1661 | glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); 1662 | glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv"); 1663 | glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv"); 1664 | glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv"); 1665 | glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); 1666 | glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv"); 1667 | glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv"); 1668 | glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv"); 1669 | glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv"); 1670 | glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); 1671 | glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation"); 1672 | glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation"); 1673 | glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui"); 1674 | glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui"); 1675 | glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui"); 1676 | glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui"); 1677 | glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv"); 1678 | glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv"); 1679 | glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv"); 1680 | glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv"); 1681 | glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv"); 1682 | glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv"); 1683 | glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv"); 1684 | glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv"); 1685 | glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv"); 1686 | glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv"); 1687 | glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv"); 1688 | glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi"); 1689 | glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi"); 1690 | glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); 1691 | glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); 1692 | glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); 1693 | glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); 1694 | glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); 1695 | glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); 1696 | glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); 1697 | glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); 1698 | glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); 1699 | glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); 1700 | glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); 1701 | glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); 1702 | glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); 1703 | glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); 1704 | glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); 1705 | glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); 1706 | glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); 1707 | glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); 1708 | glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); 1709 | glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); 1710 | glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); 1711 | glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); 1712 | glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); 1713 | glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); 1714 | glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); 1715 | glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); 1716 | } 1717 | static void load_GL_VERSION_3_1(GLADloadproc load) { 1718 | if(!GLAD_GL_VERSION_3_1) return; 1719 | glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); 1720 | glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); 1721 | glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); 1722 | glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex"); 1723 | glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); 1724 | glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); 1725 | glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); 1726 | glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); 1727 | glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); 1728 | glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); 1729 | glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); 1730 | glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); 1731 | glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); 1732 | glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); 1733 | glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); 1734 | } 1735 | static void load_GL_VERSION_3_2(GLADloadproc load) { 1736 | if(!GLAD_GL_VERSION_3_2) return; 1737 | glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); 1738 | glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); 1739 | glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); 1740 | glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); 1741 | glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); 1742 | glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); 1743 | glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); 1744 | glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); 1745 | glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); 1746 | glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); 1747 | glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); 1748 | glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); 1749 | glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); 1750 | glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); 1751 | glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); 1752 | glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); 1753 | glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); 1754 | glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); 1755 | glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); 1756 | } 1757 | static void load_GL_VERSION_3_3(GLADloadproc load) { 1758 | if(!GLAD_GL_VERSION_3_3) return; 1759 | glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); 1760 | glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); 1761 | glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); 1762 | glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); 1763 | glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); 1764 | glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); 1765 | glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); 1766 | glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); 1767 | glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); 1768 | glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); 1769 | glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); 1770 | glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); 1771 | glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); 1772 | glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); 1773 | glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); 1774 | glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); 1775 | glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); 1776 | glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); 1777 | glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); 1778 | glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); 1779 | glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); 1780 | glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); 1781 | glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); 1782 | glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); 1783 | glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); 1784 | glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); 1785 | glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); 1786 | glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); 1787 | glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); 1788 | glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); 1789 | glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); 1790 | glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); 1791 | glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); 1792 | glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); 1793 | glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); 1794 | glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); 1795 | glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); 1796 | glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); 1797 | glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); 1798 | glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); 1799 | glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); 1800 | glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); 1801 | glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); 1802 | glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); 1803 | glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); 1804 | glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); 1805 | glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); 1806 | glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); 1807 | glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); 1808 | glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); 1809 | glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); 1810 | glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); 1811 | glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); 1812 | glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); 1813 | glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); 1814 | glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); 1815 | glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); 1816 | glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); 1817 | } 1818 | static void load_GL_VERSION_4_0(GLADloadproc load) { 1819 | if(!GLAD_GL_VERSION_4_0) return; 1820 | glad_glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)load("glMinSampleShading"); 1821 | glad_glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)load("glBlendEquationi"); 1822 | glad_glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)load("glBlendEquationSeparatei"); 1823 | glad_glBlendFunci = (PFNGLBLENDFUNCIPROC)load("glBlendFunci"); 1824 | glad_glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)load("glBlendFuncSeparatei"); 1825 | glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); 1826 | glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); 1827 | glad_glUniform1d = (PFNGLUNIFORM1DPROC)load("glUniform1d"); 1828 | glad_glUniform2d = (PFNGLUNIFORM2DPROC)load("glUniform2d"); 1829 | glad_glUniform3d = (PFNGLUNIFORM3DPROC)load("glUniform3d"); 1830 | glad_glUniform4d = (PFNGLUNIFORM4DPROC)load("glUniform4d"); 1831 | glad_glUniform1dv = (PFNGLUNIFORM1DVPROC)load("glUniform1dv"); 1832 | glad_glUniform2dv = (PFNGLUNIFORM2DVPROC)load("glUniform2dv"); 1833 | glad_glUniform3dv = (PFNGLUNIFORM3DVPROC)load("glUniform3dv"); 1834 | glad_glUniform4dv = (PFNGLUNIFORM4DVPROC)load("glUniform4dv"); 1835 | glad_glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)load("glUniformMatrix2dv"); 1836 | glad_glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)load("glUniformMatrix3dv"); 1837 | glad_glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)load("glUniformMatrix4dv"); 1838 | glad_glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)load("glUniformMatrix2x3dv"); 1839 | glad_glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)load("glUniformMatrix2x4dv"); 1840 | glad_glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)load("glUniformMatrix3x2dv"); 1841 | glad_glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)load("glUniformMatrix3x4dv"); 1842 | glad_glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)load("glUniformMatrix4x2dv"); 1843 | glad_glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)load("glUniformMatrix4x3dv"); 1844 | glad_glGetUniformdv = (PFNGLGETUNIFORMDVPROC)load("glGetUniformdv"); 1845 | glad_glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)load("glGetSubroutineUniformLocation"); 1846 | glad_glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)load("glGetSubroutineIndex"); 1847 | glad_glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)load("glGetActiveSubroutineUniformiv"); 1848 | glad_glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)load("glGetActiveSubroutineUniformName"); 1849 | glad_glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)load("glGetActiveSubroutineName"); 1850 | glad_glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)load("glUniformSubroutinesuiv"); 1851 | glad_glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)load("glGetUniformSubroutineuiv"); 1852 | glad_glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)load("glGetProgramStageiv"); 1853 | glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); 1854 | glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); 1855 | glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback"); 1856 | glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks"); 1857 | glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks"); 1858 | glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback"); 1859 | glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback"); 1860 | glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback"); 1861 | glad_glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)load("glDrawTransformFeedback"); 1862 | glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); 1863 | glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); 1864 | glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); 1865 | glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); 1866 | } 1867 | static int find_extensionsGL(void) { 1868 | if (!get_exts()) return 0; 1869 | (void)&has_ext; 1870 | free_exts(); 1871 | return 1; 1872 | } 1873 | 1874 | static void find_coreGL(void) { 1875 | 1876 | /* Thank you @elmindreda 1877 | * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 1878 | * https://github.com/glfw/glfw/blob/master/src/context.c#L36 1879 | */ 1880 | int i, major, minor; 1881 | 1882 | const char* version; 1883 | const char* prefixes[] = { 1884 | "OpenGL ES-CM ", 1885 | "OpenGL ES-CL ", 1886 | "OpenGL ES ", 1887 | NULL 1888 | }; 1889 | 1890 | version = (const char*) glGetString(GL_VERSION); 1891 | if (!version) return; 1892 | 1893 | for (i = 0; prefixes[i]; i++) { 1894 | const size_t length = strlen(prefixes[i]); 1895 | if (strncmp(version, prefixes[i], length) == 0) { 1896 | version += length; 1897 | break; 1898 | } 1899 | } 1900 | 1901 | /* PR #18 */ 1902 | #ifdef _MSC_VER 1903 | sscanf_s(version, "%d.%d", &major, &minor); 1904 | #else 1905 | sscanf(version, "%d.%d", &major, &minor); 1906 | #endif 1907 | 1908 | GLVersion.major = major; GLVersion.minor = minor; 1909 | max_loaded_major = major; max_loaded_minor = minor; 1910 | GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; 1911 | GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; 1912 | GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; 1913 | GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; 1914 | GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; 1915 | GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; 1916 | GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; 1917 | GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; 1918 | GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; 1919 | GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; 1920 | GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; 1921 | GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; 1922 | GLAD_GL_VERSION_4_0 = (major == 4 && minor >= 0) || major > 4; 1923 | if (GLVersion.major > 4 || (GLVersion.major >= 4 && GLVersion.minor >= 0)) { 1924 | max_loaded_major = 4; 1925 | max_loaded_minor = 0; 1926 | } 1927 | } 1928 | 1929 | int gladLoadGLLoader(GLADloadproc load) { 1930 | GLVersion.major = 0; GLVersion.minor = 0; 1931 | glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); 1932 | if(glGetString == NULL) return 0; 1933 | if(glGetString(GL_VERSION) == NULL) return 0; 1934 | find_coreGL(); 1935 | load_GL_VERSION_1_0(load); 1936 | load_GL_VERSION_1_1(load); 1937 | load_GL_VERSION_1_2(load); 1938 | load_GL_VERSION_1_3(load); 1939 | load_GL_VERSION_1_4(load); 1940 | load_GL_VERSION_1_5(load); 1941 | load_GL_VERSION_2_0(load); 1942 | load_GL_VERSION_2_1(load); 1943 | load_GL_VERSION_3_0(load); 1944 | load_GL_VERSION_3_1(load); 1945 | load_GL_VERSION_3_2(load); 1946 | load_GL_VERSION_3_3(load); 1947 | load_GL_VERSION_4_0(load); 1948 | 1949 | if (!find_extensionsGL()) return 0; 1950 | return GLVersion.major != 0 || GLVersion.minor != 0; 1951 | } 1952 | 1953 | static void load_GL_ES_VERSION_2_0(GLADloadproc load) { 1954 | if(!GLAD_GL_ES_VERSION_2_0) return; 1955 | glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); 1956 | glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); 1957 | glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); 1958 | glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); 1959 | glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); 1960 | glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); 1961 | glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); 1962 | glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); 1963 | glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); 1964 | glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); 1965 | glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); 1966 | glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); 1967 | glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); 1968 | glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); 1969 | glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); 1970 | glad_glClear = (PFNGLCLEARPROC)load("glClear"); 1971 | glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); 1972 | glad_glClearDepthf = (PFNGLCLEARDEPTHFPROC)load("glClearDepthf"); 1973 | glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); 1974 | glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); 1975 | glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); 1976 | glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); 1977 | glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); 1978 | glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); 1979 | glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); 1980 | glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); 1981 | glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); 1982 | glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); 1983 | glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); 1984 | glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); 1985 | glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); 1986 | glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); 1987 | glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); 1988 | glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); 1989 | glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); 1990 | glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); 1991 | glad_glDepthRangef = (PFNGLDEPTHRANGEFPROC)load("glDepthRangef"); 1992 | glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); 1993 | glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); 1994 | glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); 1995 | glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); 1996 | glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); 1997 | glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); 1998 | glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); 1999 | glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); 2000 | glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); 2001 | glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); 2002 | glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); 2003 | glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); 2004 | glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); 2005 | glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); 2006 | glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); 2007 | glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); 2008 | glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); 2009 | glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); 2010 | glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); 2011 | glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); 2012 | glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); 2013 | glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); 2014 | glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); 2015 | glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); 2016 | glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); 2017 | glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); 2018 | glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); 2019 | glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); 2020 | glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); 2021 | glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); 2022 | glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); 2023 | glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); 2024 | glad_glGetShaderPrecisionFormat = (PFNGLGETSHADERPRECISIONFORMATPROC)load("glGetShaderPrecisionFormat"); 2025 | glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); 2026 | glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); 2027 | glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); 2028 | glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); 2029 | glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); 2030 | glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); 2031 | glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); 2032 | glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); 2033 | glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); 2034 | glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); 2035 | glad_glHint = (PFNGLHINTPROC)load("glHint"); 2036 | glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); 2037 | glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); 2038 | glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); 2039 | glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); 2040 | glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); 2041 | glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); 2042 | glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); 2043 | glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); 2044 | glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); 2045 | glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); 2046 | glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); 2047 | glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); 2048 | glad_glReleaseShaderCompiler = (PFNGLRELEASESHADERCOMPILERPROC)load("glReleaseShaderCompiler"); 2049 | glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); 2050 | glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); 2051 | glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); 2052 | glad_glShaderBinary = (PFNGLSHADERBINARYPROC)load("glShaderBinary"); 2053 | glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); 2054 | glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); 2055 | glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); 2056 | glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); 2057 | glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); 2058 | glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); 2059 | glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); 2060 | glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); 2061 | glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); 2062 | glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); 2063 | glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); 2064 | glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); 2065 | glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); 2066 | glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); 2067 | glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); 2068 | glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); 2069 | glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); 2070 | glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); 2071 | glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); 2072 | glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); 2073 | glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); 2074 | glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); 2075 | glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); 2076 | glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); 2077 | glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); 2078 | glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); 2079 | glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); 2080 | glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); 2081 | glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); 2082 | glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); 2083 | glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); 2084 | glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); 2085 | glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); 2086 | glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); 2087 | glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); 2088 | glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); 2089 | glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); 2090 | glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); 2091 | glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); 2092 | glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); 2093 | glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); 2094 | glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); 2095 | glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); 2096 | glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); 2097 | } 2098 | static void load_GL_ES_VERSION_3_0(GLADloadproc load) { 2099 | if(!GLAD_GL_ES_VERSION_3_0) return; 2100 | glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); 2101 | glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); 2102 | glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); 2103 | glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); 2104 | glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); 2105 | glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); 2106 | glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); 2107 | glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); 2108 | glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); 2109 | glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); 2110 | glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery"); 2111 | glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery"); 2112 | glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv"); 2113 | glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); 2114 | glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); 2115 | glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); 2116 | glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); 2117 | glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); 2118 | glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); 2119 | glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); 2120 | glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv"); 2121 | glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); 2122 | glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); 2123 | glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); 2124 | glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); 2125 | glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); 2126 | glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); 2127 | glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); 2128 | glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); 2129 | glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); 2130 | glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); 2131 | glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); 2132 | glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); 2133 | glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback"); 2134 | glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback"); 2135 | glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); 2136 | glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); 2137 | glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings"); 2138 | glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying"); 2139 | glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); 2140 | glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); 2141 | glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); 2142 | glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); 2143 | glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); 2144 | glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); 2145 | glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); 2146 | glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); 2147 | glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation"); 2148 | glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui"); 2149 | glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui"); 2150 | glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui"); 2151 | glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui"); 2152 | glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv"); 2153 | glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv"); 2154 | glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv"); 2155 | glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv"); 2156 | glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv"); 2157 | glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv"); 2158 | glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv"); 2159 | glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi"); 2160 | glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi"); 2161 | glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); 2162 | glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); 2163 | glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); 2164 | glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); 2165 | glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); 2166 | glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); 2167 | glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); 2168 | glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); 2169 | glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); 2170 | glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); 2171 | glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); 2172 | glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); 2173 | glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); 2174 | glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); 2175 | glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); 2176 | glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); 2177 | glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); 2178 | glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); 2179 | glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); 2180 | glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); 2181 | glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); 2182 | glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); 2183 | glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); 2184 | glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); 2185 | glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); 2186 | glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); 2187 | glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); 2188 | glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); 2189 | glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); 2190 | glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback"); 2191 | glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks"); 2192 | glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks"); 2193 | glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback"); 2194 | glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback"); 2195 | glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback"); 2196 | glad_glGetProgramBinary = (PFNGLGETPROGRAMBINARYPROC)load("glGetProgramBinary"); 2197 | glad_glProgramBinary = (PFNGLPROGRAMBINARYPROC)load("glProgramBinary"); 2198 | glad_glProgramParameteri = (PFNGLPROGRAMPARAMETERIPROC)load("glProgramParameteri"); 2199 | glad_glInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC)load("glInvalidateFramebuffer"); 2200 | glad_glInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC)load("glInvalidateSubFramebuffer"); 2201 | glad_glTexStorage2D = (PFNGLTEXSTORAGE2DPROC)load("glTexStorage2D"); 2202 | glad_glTexStorage3D = (PFNGLTEXSTORAGE3DPROC)load("glTexStorage3D"); 2203 | glad_glGetInternalformativ = (PFNGLGETINTERNALFORMATIVPROC)load("glGetInternalformativ"); 2204 | } 2205 | static int find_extensionsGLES2(void) { 2206 | if (!get_exts()) return 0; 2207 | (void)&has_ext; 2208 | free_exts(); 2209 | return 1; 2210 | } 2211 | 2212 | static void find_coreGLES2(void) { 2213 | 2214 | /* Thank you @elmindreda 2215 | * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 2216 | * https://github.com/glfw/glfw/blob/master/src/context.c#L36 2217 | */ 2218 | int i, major, minor; 2219 | 2220 | const char* version; 2221 | const char* prefixes[] = { 2222 | "OpenGL ES-CM ", 2223 | "OpenGL ES-CL ", 2224 | "OpenGL ES ", 2225 | NULL 2226 | }; 2227 | 2228 | version = (const char*) glGetString(GL_VERSION); 2229 | if (!version) return; 2230 | 2231 | for (i = 0; prefixes[i]; i++) { 2232 | const size_t length = strlen(prefixes[i]); 2233 | if (strncmp(version, prefixes[i], length) == 0) { 2234 | version += length; 2235 | break; 2236 | } 2237 | } 2238 | 2239 | /* PR #18 */ 2240 | #ifdef _MSC_VER 2241 | sscanf_s(version, "%d.%d", &major, &minor); 2242 | #else 2243 | sscanf(version, "%d.%d", &major, &minor); 2244 | #endif 2245 | 2246 | GLVersion.major = major; GLVersion.minor = minor; 2247 | max_loaded_major = major; max_loaded_minor = minor; 2248 | GLAD_GL_ES_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; 2249 | GLAD_GL_ES_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; 2250 | if (GLVersion.major > 3 || (GLVersion.major >= 3 && GLVersion.minor >= 0)) { 2251 | max_loaded_major = 3; 2252 | max_loaded_minor = 0; 2253 | } 2254 | } 2255 | 2256 | int gladLoadGLES2Loader(GLADloadproc load) { 2257 | GLVersion.major = 0; GLVersion.minor = 0; 2258 | glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); 2259 | if(glGetString == NULL) return 0; 2260 | if(glGetString(GL_VERSION) == NULL) return 0; 2261 | find_coreGLES2(); 2262 | load_GL_ES_VERSION_2_0(load); 2263 | load_GL_ES_VERSION_3_0(load); 2264 | 2265 | if (!find_extensionsGLES2()) return 0; 2266 | return GLVersion.major != 0 || GLVersion.minor != 0; 2267 | } 2268 | -------------------------------------------------------------------------------- /license.md: -------------------------------------------------------------------------------- 1 | This is free and unencumbered software released into the public domain. 2 | 3 | Anyone is free to copy, modify, publish, use, compile, sell, or distribute this software, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means. 4 | 5 | In jurisdictions that recognize copyright laws, the author or authors of this software dedicate any and all copyright interest in the software to the public domain. We make this dedication for the benefit of the public at large and to the detriment of our heirs and successors. We intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this software under copyright law. 6 | 7 | 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 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. 8 | 9 | For more information, please refer to -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | ![Cover Art](https://alain.xyz/blog/raw-opengl/assets/cover.jpg) 2 | 3 | # ⚪ OpenGL Seed 4 | 5 | [![CMake][cmake-img]][cmake-url] 6 | [![License][license-img]][license-url] 7 | 8 | - [🐟 Glitch Example](https://glitch.com/~opengl-seed-wasm) 9 | 10 | - [💬 Blog Post](https://alain.xyz/blog/raw-opengl) 11 | 12 | A starter repo that you could use to build an OpenGL application on top of. 13 | 14 | Check out the this [blog post](https://alain.xyz/blog/raw-opengl) for more details about this example. 15 | 16 | ## Setup 17 | 18 | First install: 19 | 20 | - [Git](https://git-scm.com/) 21 | 22 | - [CMake](https://cmake.org) 23 | 24 | - An IDE such as [Visual Studio](https://visualstudio.microsoft.com/downloads/), [XCode](https://developer.apple.com/xcode/), or a compiler such as [GCC](https://gcc.gnu.org/). 25 | 26 | Then type the following in your [terminal](https://hyper.is/). 27 | 28 | ```bash 29 | # 🐑 Clone the repo 30 | git clone https://github.com/alaingalvan/opengl-seed --recurse-submodules 31 | 32 | # 💿 go inside the folder 33 | cd opengl-seed 34 | 35 | # 👯 If you forget to `recurse-submodules` you can always run: 36 | git submodule update --init 37 | 38 | # 👷 Make a build folder 39 | mkdir build 40 | cd build 41 | 42 | # 🖼️ To build your Visual Studio solution on Windows x64 43 | cmake .. -A x64 44 | 45 | # 🍎 To build your XCode project on Mac OS 46 | cmake .. -G Xcode 47 | 48 | # 🐧 To build your .make file on Linux 49 | cmake .. 50 | 51 | # 🔨 Build on any platform: 52 | cmake --build . 53 | ``` 54 | 55 | ### WebAssembly 56 | 57 | **Note**: if you're on Windows, I would highly recommend using the [Windows Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10#install-the-windows-subsystem-for-linux). 58 | 59 | First, install the latest version of Emscripten via the [Emscripten SDK](https://kripken.github.io/emscripten-site/docs/getting_started/downloads.html). Make sure to add it's Emscripten installation to your `PATH`, then: 60 | 61 | ```bash 62 | # ⚠️ Possible dependencies you might need: 63 | sudo apt-get update 64 | sudo apt-get install cmake build-essential llvm 65 | 66 | # 👷 Make a build folder 67 | mkdir wasm 68 | cd wasm 69 | 70 | # 🔨 Build the project 71 | emcmake cmake .. 72 | emmake make OpenGLSeed -j 73 | ``` 74 | 75 | From there create an HTML file that loads the generated `OpenGLSeed.js` file, and run an http server. You can find an example of this [here](https://github.com/alaingalvan/opengl-seed-wasm). 76 | 77 | ### File Structure 78 | 79 | ```bash 80 | ├─ 📂 external/ # 👶 Dependencies 81 | │ ├─ 📁 crosswindow/ # 🖼️ OS Windows 82 | │ ├─ 📁 crosswindow-graphics/ # 🎨 GL Context Creation 83 | │ ├─ 📁 glm/ # ➕ Linear Algebra 84 | │ ├─ 📁 opengl-registry/ # 📚 GL Headers 85 | │ └─ 📁 glad/ # 🙌 GL Extension Loader 86 | ├─ 📂 src/ # 🌟 Source Files 87 | │ ├─ 📄 Utils.h # ⚙️ Utilities (Load Files, Check Shaders, etc.) 88 | │ ├─ 📄 Triangle.h # 🔺 Triangle Draw Code 89 | │ ├─ 📄 Triangle.cpp # - 90 | │ └─ 📄 Main.cpp # 🏁 Application Main 91 | ├─ 📄 .gitignore # 👁️ Ignore certain files in git repo 92 | ├─ 📄 CMakeLists.txt # 🔨 Build Script 93 | ├─ 📄 license.md # ⚖️ Your License (Unlicense) 94 | └─ 📃readme.md # 📖 Read Me! 95 | ``` 96 | 97 | [cmake-img]: https://img.shields.io/badge/cmake-3.6-1f9948.svg?style=flat-square 98 | [cmake-url]: https://cmake.org/ 99 | [license-img]: http://img.shields.io/:license-unlicense-blue.svg?style=flat-square 100 | [license-url]: http://unlicense.org/ 101 | [windows-img]: http://img.shields.io/:supports-win-03b3fe.svg?style=flat-square 102 | [mac-img]: http://img.shields.io/:download-mac-1ed1fa.svg?style=flat-square 103 | [android-img]: http://img.shields.io/:supports-android-a4ca39.svg?style=flat-square 104 | [linux-img]: http://img.shields.io/:supports-linux-df491e.svg?style=flat-square 105 | [ios-img]: http://img.shields.io/:supports-ios-006ded.svg?style=flat-square -------------------------------------------------------------------------------- /src/Main.cpp: -------------------------------------------------------------------------------- 1 | /** 2 | * Raw OpenGL - Hello Triangle Example 3 | * Author: Alain Galvan (hi@alain.xyz) 4 | * 5 | * Note: to run this you'll need to follow the instructions in the "Setup" section 6 | * of https://alain.xyz/blog/raw-opengl 7 | */ 8 | #define GL_SILENCE_DEPRECATION 9 | 10 | #include "CrossWindow/CrossWindow.h" 11 | #ifndef __EMSCRIPTEN__ 12 | #include "glad/glad.h" 13 | #endif 14 | #include "CrossWindow/Graphics.h" 15 | 16 | #include 17 | 18 | #include "Triangle.h" 19 | 20 | void xmain(int argc, const char** argv) 21 | { 22 | // 🖼 Create Window 23 | xwin::WindowDesc wdesc; 24 | wdesc.title = "OpenGL Seed"; 25 | wdesc.name = "MainWindow"; 26 | wdesc.visible = true; 27 | wdesc.width = 640; 28 | wdesc.height = 640; 29 | wdesc.fullscreen = false; 30 | 31 | xwin::Window window; 32 | xwin::EventQueue eventQueue; 33 | 34 | if (!window.create(wdesc, eventQueue)) 35 | { return; }; 36 | 37 | // ⚪ Load OpenGL 38 | xgfx::OpenGLDesc desc; 39 | xgfx::OpenGLState oglState = xgfx::createContext(&window, desc); 40 | xgfx::setContext(oglState); 41 | if (!loadOpenGL()) 42 | { return; } 43 | 44 | // 🌟 Create Triangle 45 | if (!createTriangle()) 46 | { return; } 47 | 48 | // 🏁 Engine loop 49 | bool isRunning = true; 50 | while (isRunning) 51 | { 52 | bool shouldRender = true; 53 | 54 | // ♻️ Update the event queue 55 | eventQueue.update(); 56 | 57 | // 🎈 Iterate through that queue: 58 | while (!eventQueue.empty()) 59 | { 60 | //Update Events 61 | const xwin::Event& event = eventQueue.front(); 62 | 63 | // ❌ On Close: 64 | if (event.type == xwin::EventType::Close) 65 | { 66 | window.close(); 67 | shouldRender = false; 68 | isRunning = false; 69 | } 70 | 71 | eventQueue.pop(); 72 | } 73 | 74 | // ✨ Update Visuals 75 | if (shouldRender) 76 | { 77 | // 🔁 Swap back buffers so we can write to the next frame buffer 78 | xgfx::swapBuffers(oglState); 79 | drawTriangle(wdesc.width, wdesc.height); 80 | } 81 | } 82 | 83 | // ❌ Destroy OpenGL Data Structures 84 | destroyTriangle(); 85 | xgfx::destroyContext(oglState); 86 | } 87 | -------------------------------------------------------------------------------- /src/Triangle.cpp: -------------------------------------------------------------------------------- 1 | #include "Triangle.h" 2 | #include "Utils.h" 3 | 4 | #ifndef __EMSCRIPTEN__ 5 | #include "glad/glad.h" 6 | #endif 7 | 8 | #define EMBED_SHADERS 1 9 | 10 | /************************************************************** 11 | * 🌎 Globals 12 | **************************************************************/ 13 | 14 | // 🧚🏻 Shader Strings 15 | 16 | const char* vertShader = R"( 17 | #version 410 18 | 19 | layout(location = 0) in vec3 inPosition; 20 | layout(location = 1) in vec3 inColor; 21 | 22 | layout(location = 0) out vec3 vColor; 23 | 24 | void main() 25 | { 26 | vColor = inColor; 27 | gl_Position = vec4(inPosition, 1.0); 28 | } 29 | )"; 30 | 31 | const char* fragShader = R"( 32 | #version 410 33 | 34 | precision mediump float; 35 | precision highp int; 36 | 37 | layout(location = 0) in highp vec3 vColor; 38 | 39 | layout(location = 0) out highp vec4 outFragColor; 40 | 41 | 42 | void main() 43 | { 44 | outFragColor = vec4(vColor, 1.0); 45 | } 46 | )"; 47 | 48 | // 📈 Triangle Buffer Data 49 | float positions[3 * 3] = { 1.0f, -1.0f, 0.0f, 50 | -1.0f, -1.0f, 0.0f, 51 | 0.0f, 1.0f, 0.0f }; 52 | 53 | float colors[3 * 3] = { 1.0f, 0.0f, 0.0f, 54 | 0.0f, 1.0f, 0.0f, 55 | 0.0f, 0.0f, 1.0f }; 56 | 57 | GLuint indexBufferData[3] = { 0, 1, 2 }; 58 | 59 | 60 | // GLHandles. Any value > 0 means the handle has been created. 61 | GLuint positionVBO = 0; 62 | GLuint colorVBO = 0; 63 | GLuint ibo = 0; 64 | GLuint vs = 0; 65 | GLuint fs = 0; 66 | GLuint vbo = 0; 67 | GLuint program = 0; 68 | GLuint vao = 0; 69 | 70 | /************************************************************** 71 | * 🔺 Create, Draw, and Destroy 72 | **************************************************************/ 73 | 74 | bool loadOpenGL() 75 | { 76 | #if !defined(XWIN_WASM) 77 | if (!gladLoadGL()) 78 | { 79 | std::cout << "Failed to load OpenGL."; 80 | return false; 81 | } 82 | #endif 83 | GLenum err = glGetError(); 84 | if (err != GL_NO_ERROR) 85 | { 86 | std::cout << "OpenGL started with error code: " << err; 87 | return false; 88 | } 89 | 90 | int majorVersion, minorVersion; 91 | glGetIntegerv(GL_MAJOR_VERSION, &majorVersion); 92 | glGetIntegerv(GL_MINOR_VERSION, &minorVersion); 93 | std::cout << "OpenGL Version: " << majorVersion << "." << minorVersion 94 | << std::endl; 95 | 96 | // Most OpenGL Apps will want to enable these settings: 97 | 98 | // 🖍️ Set default clear color to gray ⚫ 99 | glClearColor(0.0f, 0.0f, 0.0f, 1.0f); 100 | // 🔺 Enable depth testing 101 | glEnable(GL_DEPTH_TEST); 102 | // <= Set Depth Test Function 103 | glDepthFunc(GL_LEQUAL); 104 | 105 | // Enable anything else like blend modes, etc... 106 | 107 | return true; 108 | } 109 | 110 | bool createTriangle() 111 | { 112 | // ⚪ Create VBO 113 | glGenBuffers(1, &positionVBO); 114 | // 🩹 Bind VBO to GLState 115 | glBindBuffer(GL_ARRAY_BUFFER, positionVBO); 116 | // 💾 Push data to VBO 117 | glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 3 * 3, positions, GL_STATIC_DRAW); 118 | 119 | // ⚪ Create VBO 120 | glGenBuffers(1, &colorVBO); 121 | // 🩹 Bind VBO to GLState 122 | glBindBuffer(GL_ARRAY_BUFFER, colorVBO); 123 | // 💾 Push data to VBO 124 | glBufferData(GL_ARRAY_BUFFER, sizeof(float) * 3 * 3, colors, GL_STATIC_DRAW); 125 | 126 | // ⚪ Create IBO 127 | glGenBuffers(1, &ibo); 128 | // 🩹 Bind IBO to GLState 129 | glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo); 130 | // 💾 Push data to IBO 131 | glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(GLuint) * 3, indexBufferData, GL_STATIC_DRAW); 132 | 133 | // 📂 Load Vertex Shader String 134 | #ifndef EMBED_SHADERS 135 | std::string vsPath = getAppDirectory() + "assets/shaders/triangle.vert"; 136 | std::vector vertShaderCode = readFile(vsPath); 137 | const char* vertString = vertShaderCode.data(); 138 | int vertStringSize = static_cast(vertShaderCode.size()); 139 | #else 140 | const char* vertString = vertShader; 141 | int vertStringSize = strlen(vertShader); 142 | #endif 143 | // ⚪ Create Shader Data Structure 144 | vs = glCreateShader(GL_VERTEX_SHADER); 145 | // 📰 Pass Vertex Shader String 146 | glShaderSource(vs, 1, &vertString, &vertStringSize); 147 | // 🔨 Compile Vertex Shader (and check for errors) 148 | glCompileShader(vs); 149 | if (!checkShaderCompilation(vs)) return false; 150 | 151 | // 📂 Load Fragment Shader String 152 | #ifndef EMBED_SHADERS 153 | std::string fsPath = getAppDirectory() + "assets/shaders/triangle.frag"; 154 | std::vector fragShaderCode = readFile(fsPath); 155 | const char* fragString = fragShaderCode.data(); 156 | int fragStringSize = static_cast(fragShaderCode.size()); 157 | #else 158 | const char* fragString = fragShader; 159 | int fragStringSize = strlen(fragShader); 160 | #endif 161 | // ⚪ Create Shader Data Structure 162 | fs = glCreateShader(GL_FRAGMENT_SHADER); 163 | // 📰 Pass Fragment Shader String 164 | glShaderSource(fs, 1, &fragString, &fragStringSize); 165 | // 🔨 Compile Vertex Shader (and check for errors) 166 | glCompileShader(fs); 167 | if (!checkShaderCompilation(fs)) return false; 168 | 169 | // ⚪ Create Shader Program 170 | program = glCreateProgram(); 171 | // 🩹 Attach Shader Stages to Program 172 | glAttachShader(program, vs); 173 | glAttachShader(program, fs); 174 | // 🔗 Link Program (and check for errors) 175 | glLinkProgram(program); 176 | if (!checkProgramCompilation(program)) return false; 177 | 178 | // 📐 Create Vertex Array Object 179 | glGenVertexArrays(1, &vao); 180 | 181 | // 💕 Bind Vertex Array Object 182 | glBindVertexArray(vao); 183 | 184 | // 🔺 Bind positionVBO to VAO 185 | glBindBuffer(GL_ARRAY_BUFFER, positionVBO); 186 | // 🔎 Get position of attribute from shader program 187 | GLint positionAttrib = glGetAttribLocation(program, "inPosition"); 188 | // 🩹 Bind positionVBO to VAO with the index of positionAttrib (0) 189 | glEnableVertexAttribArray(positionAttrib); 190 | // 💬 Describe data layout of VBO 191 | glVertexAttribPointer(positionAttrib, 3, GL_FLOAT, GL_FALSE, 192 | sizeof(float) * 3, (void*)0); 193 | 194 | // 🎨 Bind colorVBO to VAO 195 | glBindBuffer(GL_ARRAY_BUFFER, colorVBO); 196 | // 🔎 Get position of attribute from shader program 197 | GLint colorAttrib = glGetAttribLocation(program, "inColor"); 198 | // 🩹 Bind positionVBO to VAO with the index of colorAttrib (1) 199 | glEnableVertexAttribArray(colorAttrib); 200 | // 💬 Describe data layout of VBO 201 | glVertexAttribPointer(colorAttrib, 3, GL_FLOAT, GL_FALSE, 202 | sizeof(float) * 3, (void*)0); 203 | 204 | // 🗄️ Bind IBO to VAO 205 | glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, ibo); 206 | 207 | return true; 208 | } 209 | 210 | void drawTriangle(unsigned width, unsigned height) 211 | { 212 | // 🖼️ Set the Viewport size to where you'll be drawing 213 | glViewport(0, 0, width, height); 214 | 215 | // 🧪 Clear 216 | glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 217 | 218 | // 🎨 Bind Shader 219 | glUseProgram(program); 220 | 221 | // 🩹 Bind VAO 222 | glBindVertexArray(vao); 223 | 224 | // 🛆 Draw 225 | glDrawElements(GL_TRIANGLES, 3, GL_UNSIGNED_INT, 0); 226 | } 227 | 228 | void destroyTriangle() 229 | { 230 | glDeleteBuffers(1, &positionVBO); 231 | glDeleteBuffers(1, &colorVBO); 232 | glDeleteBuffers(1, &ibo); 233 | glDeleteShader(vs); 234 | glDeleteShader(fs); 235 | glDeleteProgram(program); 236 | glDeleteVertexArrays(1, &vao); 237 | } 238 | -------------------------------------------------------------------------------- /src/Triangle.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "CrossWindow/CrossWindow.h" 4 | 5 | bool loadOpenGL(); 6 | 7 | bool createTriangle(); 8 | 9 | void drawTriangle(unsigned width, unsigned height); 10 | 11 | void destroyTriangle(); -------------------------------------------------------------------------------- /src/Utils.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #if defined(XWIN_WIN32) 6 | #include 7 | #else 8 | #include 9 | #endif 10 | 11 | #include 12 | 13 | #include "glad/glad.h" 14 | 15 | // Get the current exe directory 16 | inline std::string getAppDirectory() 17 | { 18 | std::string out; 19 | char pBuf[2048]; 20 | #ifdef XWIN_WIN32 21 | _getcwd(pBuf, 2048); 22 | out = pBuf; 23 | out += "\\"; 24 | #else 25 | getcwd(pBuf, 2048); 26 | out = pBuf; 27 | out += "/"; 28 | #endif 29 | return out; 30 | } 31 | 32 | // Read a target file 33 | inline std::vector readFile(const std::string& path) 34 | { 35 | std::ifstream file(path, std::ios::ate | std::ios::binary); 36 | bool exists = (bool)file; 37 | 38 | if (!exists || !file.is_open()) 39 | { 40 | throw std::runtime_error("failed to open file!"); 41 | } 42 | 43 | size_t fileSize = (size_t)file.tellg(); 44 | std::vector buffer(fileSize); 45 | 46 | file.seekg(0); 47 | file.read(buffer.data(), fileSize); 48 | 49 | file.close(); 50 | 51 | return buffer; 52 | } 53 | 54 | // Check if a shader has compiled correctly and output error if not 55 | inline bool checkShaderCompilation(GLuint shader) 56 | { 57 | GLint isCompiled = 0; 58 | glGetShaderiv(shader, GL_COMPILE_STATUS, &isCompiled); 59 | if (isCompiled == GL_FALSE) 60 | { 61 | GLint maxLength = 0; 62 | glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &maxLength); 63 | char* errorLog = new char[maxLength](); 64 | glGetShaderInfoLog(shader, maxLength, &maxLength, errorLog); 65 | glDeleteShader(shader); 66 | std::cout << errorLog; 67 | delete[] errorLog; 68 | return false; 69 | } 70 | return true; 71 | } 72 | 73 | // Check if a program was able to link correctly 74 | inline bool checkProgramCompilation(GLuint program) 75 | { 76 | GLint result = 0; 77 | glGetProgramiv(program, GL_LINK_STATUS, &result); 78 | 79 | if (result != GL_TRUE) 80 | { 81 | std::cout << "Program failed to link."; 82 | GLint maxLength = 0; 83 | glGetProgramiv(program, GL_INFO_LOG_LENGTH, &maxLength); 84 | 85 | // The maxLength includes the NULL character 86 | char* errorLog = new char[maxLength](); 87 | glGetProgramInfoLog(program, maxLength, &maxLength, errorLog); 88 | std::cout << errorLog; 89 | delete[] errorLog; 90 | return false; 91 | } 92 | 93 | return true; 94 | } 95 | --------------------------------------------------------------------------------