├── README.md ├── bin ├── myWin ├── myTriangle └── media │ └── shaders │ ├── hello_triangle.frag │ └── hello_triangle.vert ├── .gitignore ├── CMakeLists.txt ├── src ├── window.cpp ├── helloTriangle │ └── helloTriangle.cpp └── glad.c └── LICENSE /README.md: -------------------------------------------------------------------------------- 1 | # opengl-tuto 2 | learn opengl tutorial 3 | -------------------------------------------------------------------------------- /bin/myWin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/D-K-E/opengl-tuto/master/bin/myWin -------------------------------------------------------------------------------- /bin/myTriangle: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/D-K-E/opengl-tuto/master/bin/myTriangle -------------------------------------------------------------------------------- /bin/media/shaders/hello_triangle.frag: -------------------------------------------------------------------------------- 1 | #version 420 core 2 | out vec4 FragColor; 3 | 4 | void main() { 5 | FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f); 6 | } 7 | -------------------------------------------------------------------------------- /bin/media/shaders/hello_triangle.vert: -------------------------------------------------------------------------------- 1 | #version 420 core 2 | 3 | layout (location = 0) in vec3 aPos; 4 | 5 | void main() { 6 | gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0); 7 | } 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Prerequisites 2 | *.d 3 | 4 | # Compiled Object files 5 | *.slo 6 | *.lo 7 | *.o 8 | *.obj 9 | 10 | # Precompiled Headers 11 | *.gch 12 | *.pch 13 | 14 | # Compiled Dynamic libraries 15 | *.so 16 | *.dylib 17 | *.dll 18 | 19 | # Fortran module files 20 | *.mod 21 | *.smod 22 | 23 | # Compiled Static libraries 24 | *.lai 25 | *.la 26 | *.a 27 | *.lib 28 | 29 | # Executables 30 | *.exe 31 | *.out 32 | *.app 33 | 34 | include/* 35 | libs/* 36 | build/* 37 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required (VERSION 3.0.2) 2 | project("Hello Window OpenGL") 3 | 4 | set (CMAKE_CXX_STANDARD 17) 5 | 6 | find_package(OpenGL REQUIRED) 7 | 8 | include_directories( 9 | # my headers 10 | "include/" 11 | ) 12 | 13 | #set( GLFW_STATIC_LIB "/media/kaan/Data7510/GitProjects/glfw-build/src/libglfw3.a") 14 | set( GLFW_SHARED_LIB 15 | "${PROJECT_SOURCE_DIR}/libs/glfw/src/libglfw.so") 16 | 17 | set (BOOST_SYSTEM_DYNAMIC_LIB 18 | "${PROJECT_SOURCE_DIR}/libs/boost/libboost_system.a") 19 | 20 | set (BOOST_FILESYSTEM_DYNAMIC_LIB 21 | "${PROJECT_SOURCE_DIR}/libs/boost/libboost_filesystem.a") 22 | 23 | 24 | set (FLAGS "-ldl -ggdb -Wall -Wextra") 25 | 26 | set ( ALL_LIBS 27 | ${OpenGL} 28 | ${GLFW_SHARED_LIB} 29 | ${BOOST_SYSTEM_DYNAMIC_LIB} 30 | ${BOOST_FILESYSTEM_DYNAMIC_LIB} 31 | "-ldl" 32 | ) 33 | 34 | add_executable(myWin 35 | "src/glad.c" 36 | "src/window.cpp" 37 | ) 38 | 39 | add_executable(myTriangle 40 | "src/glad.c" 41 | "src/helloTriangle/helloTriangle.cpp" 42 | ) 43 | 44 | 45 | target_link_libraries(myWin ${ALL_LIBS}) 46 | 47 | 48 | target_link_libraries(myTriangle ${ALL_LIBS}) 49 | 50 | install(TARGETS myWin DESTINATION "${PROJECT_SOURCE_DIR}/bin/") 51 | install(TARGETS myTriangle DESTINATION "${PROJECT_SOURCE_DIR}/bin/") 52 | -------------------------------------------------------------------------------- /src/window.cpp: -------------------------------------------------------------------------------- 1 | // code of learn opengl 2 | /* 3 | 1*: line written at first pass 4 | 2*: line written at second pass 5 | 6 | 1*start ..code.. 1*end: lines written at first pass 7 | 2*start ..code.. 2*end: lines written at second pass 8 | */ 9 | // 1*start 10 | #include 11 | #include 12 | #include 13 | 14 | #include 15 | 16 | // 1*end 17 | 18 | // 4*: declare the function here in order to 19 | // use it as a callback 20 | // It's definition comes after the main function 21 | void framebuffer_size_callback(GLFWwindow* window, 22 | int width, int height); 23 | 24 | void processInput(GLFWwindow* window); 25 | 26 | void renderOnWindow(GLFWwindow* window); 27 | 28 | // we start with writting a main function that loads the glfw 29 | int main() { // 1* 30 | glfwInit(); // 1*: loads the glfw 31 | glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); // 1*: specifies the 32 | // opengl major version we want to use 33 | glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); // 1*: specifies the 34 | // opengl minor version we want to use 35 | // These two lines state that we would like to use opengl 3.3 36 | glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 1* 37 | // We tell glfw to load the core profile of opengl 38 | 39 | // Now we need to create a window before we can actually show something 40 | // 2*start 41 | GLFWwindow* window = glfwCreateWindow(800, // width of the window 42 | 600, // height of the window 43 | "My Window", // title of the window 44 | NULL, 45 | NULL); 46 | if (window == NULL) { 47 | std::cout << "Failed to create the window" << std::endl; 48 | glfwTerminate(); 49 | return -1; 50 | } 51 | glfwMakeContextCurrent(window); 52 | // makes the window part of current 53 | // context. This means that the window would receive commands from 54 | // opengl, a context can have multiple windows, and a single applicationn 55 | // can have multiple contexts 56 | // 4*start 57 | // 4* 58 | glfwSetFramebufferSizeCallback(window, 59 | framebuffer_size_callback); 60 | 61 | // 4*end 62 | 63 | 64 | // 2*end 65 | // 3*start 66 | if (!gladLoadGLLoader( (GLADloadproc)glfwGetProcAddress) ) { 67 | std::cout << "Glad failed to initialized" << std::endl; 68 | return -1; 69 | } 70 | // 3*end 71 | // 4* 72 | glViewport(0, // x coord of the viewport 73 | 0, // y coord of the viewport 74 | 800, // width of the viewport 75 | 600); // height of the viewport 76 | // the point is that the window and the viewport can have different 77 | // sizes. It is the viewport that opengl would use as a canvas 78 | // to which it will map the scene coordinates 79 | 80 | 81 | //5*: now let's write the main loop 82 | while (!glfwWindowShouldClose(window)){ 83 | processInput(window); // 6* let's listen for inputs 84 | 85 | // 7*: rendering commands can start now 86 | renderOnWindow(window); 87 | 88 | glfwSwapBuffers(window); // 5* in accordance with the double buffer law 89 | // the idea is to have 2 buffers, one for computing scene, 90 | // the other for displaying the scene 91 | glfwPollEvents(); // 5* accomodates the events 92 | } 93 | 94 | // 1* 95 | glfwTerminate(); 96 | return 0; // 1*: if everything went successfull we quit the application 97 | } 98 | 99 | // 4* 100 | void framebuffer_size_callback(GLFWwindow* window, 101 | int width, int height) { 102 | // basically resize the viewport when the window is resized 103 | glViewport(0, 0, width, height); 104 | } 105 | 106 | // 6*: process some input on the window 107 | void processInput(GLFWwindow* window) { 108 | if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS){ 109 | // now the window should close when we press the escape key 110 | glfwSetWindowShouldClose(window, true); 111 | } 112 | } 113 | 114 | // 7* 115 | void renderOnWindow(GLFWwindow* window) { 116 | // let's render stuff on window 117 | // for example let's set a clear color on window 118 | // change clear color to see different colors on the window 119 | glClearColor(1.0f, 0.3f, 0.3f, 1.0f); // state setter function 120 | glClear(GL_COLOR_BUFFER_BIT); // state user function 121 | } 122 | -------------------------------------------------------------------------------- /src/helloTriangle/helloTriangle.cpp: -------------------------------------------------------------------------------- 1 | // hello triangle from learn opengl 2 | /* 3 | for the legend concerning 1* etc see window.cpp 4 | */ 5 | #include 6 | #include 7 | #include 8 | #include 9 | //#include 10 | #include 11 | #include 12 | #include 13 | #include // input output for shaders 14 | #include // input output for shaders 15 | 16 | 17 | 18 | boost::filesystem::path current_dir(boost::filesystem::current_path()); // bin 19 | boost::filesystem::path mediaDir ("media"); 20 | boost::filesystem::path shaderDir ("shaders"); 21 | boost::filesystem::path fullShaderDir = current_dir / mediaDir / shaderDir; 22 | 23 | const unsigned int WWIDTH = 800; 24 | const unsigned int WHEIGHT = 600; 25 | 26 | void framebuffer_size_callback(GLFWwindow* window, 27 | int width, int height); 28 | 29 | void processInput(GLFWwindow* window); 30 | 31 | void renderTrianglesOnWindow(GLFWwindow* window); 32 | void checkShaderProgramCompilation(unsigned int program); 33 | void checkShaderCompilation(unsigned int shader, std::string shaderType); 34 | void readFileFromText(char * arr, FILE* inFile, size_t fileSize); 35 | 36 | void triangleInit(unsigned int program, unsigned int VAO, 37 | unsigned int VBO); 38 | 39 | void startGlfwMajorMinor(unsigned int majorVersion, 40 | unsigned int minorVersion) { 41 | // init glfw 42 | glfwInit(); 43 | glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, majorVersion); 44 | glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minorVersion); 45 | glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 46 | } 47 | 48 | GLFWwindow * startGlfwWindowCoreProfile(std::string title, unsigned int majorVersion, 49 | unsigned int minorVersion, unsigned int windowWidth, 50 | unsigned int windowHeight, unsigned int viewportWidth, 51 | unsigned int viewportHeight) { 52 | // initialize the window with given major minor version, 53 | // with window height width, viewport width height 54 | GLFWwindow *window = glfwCreateWindow(windowWidth, 55 | windowHeight, title.c_str(), NULL, NULL); 56 | 57 | return window; 58 | } 59 | 60 | int main() { 61 | startGlfwMajorMinor(4, 2); 62 | // let's get that window going 63 | GLFWwindow* window = glfwCreateWindow(WWIDTH, WHEIGHT, 64 | "My Triangle", NULL, NULL); 65 | // sanity check 66 | if (window == NULL) { 67 | std::cout << "Failed to create the glfw window" << std::endl; 68 | // bye 69 | glfwTerminate(); 70 | return -1; 71 | } 72 | glfwMakeContextCurrent(window); 73 | // on resize 74 | glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); 75 | 76 | if (!gladLoadGLLoader( (GLADloadproc)glfwGetProcAddress) ) { 77 | // sanity check 78 | std::cout << "Failed to start glad" << std::endl; 79 | } 80 | 81 | glViewport(0, 0, WWIDTH, WHEIGHT); 82 | 83 | 84 | /* Start: Drawing Related Code Begins */ 85 | GLuint shaderProgram, VBO, VAO; 86 | //triangleInit(shaderProgram, VAO, VBO); 87 | // initialization code 88 | // we need shaders first, they define the behaviour of our vertices 89 | // let's start with vertex shader 90 | GLuint vertexShader; 91 | boost::filesystem::path vshaderfile ("hello_triangle.vert"); 92 | boost::filesystem::path vshaderf = fullShaderDir / vshaderfile; 93 | boost::filesystem::ifstream ifs(vshaderf); 94 | std::string content( (std::istreambuf_iterator(ifs) ), 95 | (std::istreambuf_iterator()) ); 96 | const char *vshader = content.c_str(); 97 | //const char vshader[content.size()] = content.c_str(); 98 | 99 | vertexShader = glCreateShader(GL_VERTEX_SHADER); 100 | // lets source the shader 101 | glShaderSource(vertexShader, 1, &vshader, NULL); 102 | glCompileShader(vertexShader); 103 | checkShaderCompilation(vertexShader, "VERTEX"); 104 | 105 | // let's see if we can manage a fragment shader 106 | GLuint fragmentShader; 107 | fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); 108 | // read the shader file 109 | boost::filesystem::path fragshaderfile ("hello_triangle.frag"); 110 | boost::filesystem::path fragshaderf = fullShaderDir / fragshaderfile; 111 | boost::filesystem::ifstream iifs(fragshaderf); 112 | std::string content2( (std::istreambuf_iterator(iifs) ), 113 | (std::istreambuf_iterator()) ); 114 | 115 | const char *fshader = content2.c_str(); 116 | 117 | //const char fshader[content2.size()] = content2.c_str(); 118 | 119 | // let's source the shader 120 | glShaderSource(fragmentShader, 1, &fshader, NULL); 121 | glCompileShader(fragmentShader); 122 | checkShaderCompilation(fragmentShader, "FRAGMENT"); 123 | 124 | // Now that the shaders are ready we need a program to use those shaders 125 | shaderProgram = glCreateProgram(); 126 | // let's attach shaders to program bar 127 | glAttachShader(shaderProgram, vertexShader); 128 | glAttachShader(shaderProgram, fragmentShader); 129 | glLinkProgram(shaderProgram); 130 | // again sanity check for seeing the link was successful 131 | checkShaderProgramCompilation(shaderProgram); 132 | 133 | // now that the program is linked to opengl we don't need the 134 | // shader objects anymore, since they are already linked to opengl 135 | 136 | // so let's delete them 137 | glDeleteShader(vertexShader); 138 | glDeleteShader(fragmentShader); 139 | 140 | // let's start with defining the vertices of the 141 | // triangle 142 | float vertices[] = { 143 | -0.5f, -0.5f, 0.0f, // x1, y1, z1 144 | 0.5f, -0.5f, 0.0f, // x2, y2, z2 145 | 0.0f, 0.5f, 0.0f, // x3, y3, z3 146 | }; 147 | // three corners three vertices. 148 | // notice z is 0, so no depth, so triangle is 2d 149 | 150 | // this is all good 151 | 152 | // we need VAO, vertex array object and a VBO vertex buffer object 153 | // first one contains vertices, the second one holds them in memory 154 | // it is good practice to think of them together when you are dealing 155 | // with this stage 156 | glGenVertexArrays(1, &VAO); 157 | glGenBuffers(1, &VBO); 158 | 159 | // 1 bind vertex array 160 | glBindVertexArray(VAO); 161 | 162 | // 2* Bind and set the buffer 163 | glBindBuffer(GL_ARRAY_BUFFER, VBO); // 164 | // this binds the vertex buffer to opengl's Array_buffer 165 | // meaning that anything that targets GL_ARRAY_BUFFER 166 | // from this point on will be based on the data of VBO 167 | 168 | glBufferData(GL_ARRAY_BUFFER, 169 | sizeof(vertices), // vertices size gives a size to buffer 170 | vertices, // the data to be bound 171 | GL_STATIC_DRAW); // type of memory that should be attributed 172 | // to the buffer data. GL_STATIC_DRAW means we don't expect a lot of 173 | // changes in the data. 174 | /* 175 | - GL_STATIC_DRAW: the data will most likely not change at all or very rarely. 176 | - GL_DYNAMIC_DRAW: the data is likely to change a lot. 177 | - GL_STREAM_DRAW: the data will change every time it is drawn. 178 | */ 179 | 180 | 181 | // now deal with vertex attributes, which link vertices to shaders 182 | glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), 183 | (void*)0); 184 | glEnableVertexAttribArray(0); 185 | 186 | /* lots of stuff happening here 187 | first parameter: 0, is the layout position that is specified in the 188 | shader with layout ( location = 0 ) 189 | 190 | second parameter: 3, the size of the vertex attribute. 191 | Since we have used a vec3 as the attribute of the vertex. 192 | 193 | Third parameter: GL_FLOAT the type of data inside the vertex attribute. 194 | Since we have used floats it is GL_FLOAT 195 | 196 | Fourth parameter: Use normalized coordinates for the vertex. 197 | If true, the coordinates are mapped to 0 - 1, or -1 - 1 ranges. 198 | 199 | Fifth parameter: Stride: Given an array of vertices, it would be useful 200 | to know the space between a vertice and the next vertice. 201 | Since a vertex contains three float values, the next vertice is 202 | 3 * the size of a floating point away. 203 | V1 :: 0f, 1f, 2f -> 3 float values 204 | V2 :: 2f, 4f, 2f -> 3 float values 205 | So if we are at the beginning of V1, V2 is 3 * size of float, 206 | since each float has the same size in memory. 207 | 208 | Last parameter: Offset: Where does the data begin in the buffer. 209 | For our case it starts at the start of the buffer so it is 0. 210 | (void*) is just weird. I don't know why it exists 211 | 212 | */ 213 | // now that everything is bind and ready to use in opengl 214 | 215 | // we can unbind them to keep things a bit organized 216 | glBindBuffer(GL_ARRAY_BUFFER, 0); // this unbinds the array buffer 217 | glBindVertexArray(0); // this unbinds the vertex array 218 | 219 | /* End: Drawing Related Code Begins */ 220 | 221 | /* ---------- Main loop ----------------*/ 222 | while (!glfwWindowShouldClose(window)) { 223 | // proces input 224 | processInput(window); 225 | // render window 226 | glClearColor(0.2f, 0.3f, 0.3f, 1.0f); 227 | glClear(GL_COLOR_BUFFER_BIT); 228 | 229 | // the actual drawing code 230 | glUseProgram(shaderProgram); 231 | glBindVertexArray(VAO); 232 | glDrawArrays(GL_TRIANGLES, 0, 3); 233 | // let's also unbind it as well since we are done 234 | glBindVertexArray(0); 235 | // swap buffers 236 | glfwSwapBuffers(window); 237 | // poll events 238 | glfwPollEvents(); 239 | } 240 | 241 | // everything is done, let's destroy the objects 242 | glDeleteVertexArrays(1, &VAO); 243 | glDeleteBuffers(1, &VBO); 244 | glfwTerminate(); 245 | return 0; 246 | } 247 | 248 | void framebuffer_size_callback(GLFWwindow* window, 249 | int width, int height) { 250 | glViewport(0, 0, width, height); 251 | } 252 | 253 | void processInput(GLFWwindow* window) { 254 | if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) { 255 | // user presses escape key and window closes 256 | glfwSetWindowShouldClose(window, true); 257 | 258 | } 259 | } 260 | 261 | void checkShaderCompilation(unsigned int shader, std::string shaderType) { 262 | // check whether the compilation of a certain shader has been successful 263 | int success; 264 | char infoLog[512]; 265 | glGetShaderiv(shader, GL_COMPILE_STATUS, &success); 266 | if (!success) { 267 | // 268 | glGetShaderInfoLog(shader, 512, NULL, infoLog); 269 | std::cout << "ERROR::SHADER::" << shaderType 270 | << "::COMPILATION_FAILED\n" 271 | << infoLog << std::endl; 272 | } 273 | } 274 | void checkShaderProgramCompilation(unsigned int program) { 275 | int success; 276 | char infoLog[512]; 277 | glGetProgramiv(program, GL_LINK_STATUS, &success); 278 | if (!success) { 279 | // 280 | glGetProgramInfoLog(program, 512, NULL, infoLog); 281 | std::cout << "ERROR::SHADER::" << "PROGRAM" 282 | << "::LINK_FAILED\n" 283 | << infoLog << std::endl; 284 | } 285 | } 286 | 287 | 288 | //#include 289 | //#include 290 | 291 | //#include 292 | 293 | //void framebuffer_size_callback(GLFWwindow* window, int width, int height); 294 | //void processInput(GLFWwindow *window); 295 | 296 | //// settings 297 | //const unsigned int SCR_WIDTH = 800; 298 | //const unsigned int SCR_HEIGHT = 600; 299 | 300 | //const char *vertexShaderSource = "#version 330 core\n" 301 | // "layout (location = 0) in vec3 aPos;\n" 302 | // "void main()\n" 303 | // "{\n" 304 | // " gl_Position = vec4(aPos.x, aPos.y, aPos.z, 1.0);\n" 305 | // "}\0"; 306 | //const char *fragmentShaderSource = "#version 330 core\n" 307 | // "out vec4 FragColor;\n" 308 | // "void main()\n" 309 | // "{\n" 310 | // " FragColor = vec4(1.0f, 0.5f, 0.2f, 1.0f);\n" 311 | // "}\n\0"; 312 | 313 | //int main() 314 | //{ 315 | // // glfw: initialize and configure 316 | // // ------------------------------ 317 | // glfwInit(); 318 | // glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); 319 | // glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3); 320 | // glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); 321 | 322 | //#ifdef __APPLE__ 323 | // glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // uncomment this statement to fix compilation on OS X 324 | //#endif 325 | 326 | // // glfw window creation 327 | // // -------------------- 328 | // GLFWwindow* window = glfwCreateWindow(SCR_WIDTH, SCR_HEIGHT, "LearnOpenGL", NULL, NULL); 329 | // if (window == NULL) 330 | // { 331 | // std::cout << "Failed to create GLFW window" << std::endl; 332 | // glfwTerminate(); 333 | // return -1; 334 | // } 335 | // glfwMakeContextCurrent(window); 336 | // glfwSetFramebufferSizeCallback(window, framebuffer_size_callback); 337 | 338 | // // glad: load all OpenGL function pointers 339 | // // --------------------------------------- 340 | // if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) 341 | // { 342 | // std::cout << "Failed to initialize GLAD" << std::endl; 343 | // return -1; 344 | // } 345 | 346 | 347 | // // build and compile our shader program 348 | // // ------------------------------------ 349 | // // vertex shader 350 | // int vertexShader = glCreateShader(GL_VERTEX_SHADER); 351 | // glShaderSource(vertexShader, 1, &vertexShaderSource, NULL); 352 | // glCompileShader(vertexShader); 353 | // // check for shader compile errors 354 | // int success; 355 | // char infoLog[512]; 356 | // glGetShaderiv(vertexShader, GL_COMPILE_STATUS, &success); 357 | // if (!success) 358 | // { 359 | // glGetShaderInfoLog(vertexShader, 512, NULL, infoLog); 360 | // std::cout << "ERROR::SHADER::VERTEX::COMPILATION_FAILED\n" << infoLog << std::endl; 361 | // } 362 | // // fragment shader 363 | // int fragmentShader = glCreateShader(GL_FRAGMENT_SHADER); 364 | // glShaderSource(fragmentShader, 1, &fragmentShaderSource, NULL); 365 | // glCompileShader(fragmentShader); 366 | // // check for shader compile errors 367 | // glGetShaderiv(fragmentShader, GL_COMPILE_STATUS, &success); 368 | // if (!success) 369 | // { 370 | // glGetShaderInfoLog(fragmentShader, 512, NULL, infoLog); 371 | // std::cout << "ERROR::SHADER::FRAGMENT::COMPILATION_FAILED\n" << infoLog << std::endl; 372 | // } 373 | // // link shaders 374 | // int shaderProgram = glCreateProgram(); 375 | // glAttachShader(shaderProgram, vertexShader); 376 | // glAttachShader(shaderProgram, fragmentShader); 377 | // glLinkProgram(shaderProgram); 378 | // // check for linking errors 379 | // glGetProgramiv(shaderProgram, GL_LINK_STATUS, &success); 380 | // if (!success) { 381 | // glGetProgramInfoLog(shaderProgram, 512, NULL, infoLog); 382 | // std::cout << "ERROR::SHADER::PROGRAM::LINKING_FAILED\n" << infoLog << std::endl; 383 | // } 384 | // glDeleteShader(vertexShader); 385 | // glDeleteShader(fragmentShader); 386 | 387 | // // set up vertex data (and buffer(s)) and configure vertex attributes 388 | // // ------------------------------------------------------------------ 389 | // float vertices[] = { 390 | // -0.5f, -0.5f, 0.0f, // left 391 | // 0.5f, -0.5f, 0.0f, // right 392 | // 0.0f, 0.5f, 0.0f // top 393 | // }; 394 | 395 | // unsigned int VBO, VAO; 396 | // glGenVertexArrays(1, &VAO); 397 | // glGenBuffers(1, &VBO); 398 | // // bind the Vertex Array Object first, then bind and set vertex buffer(s), and then configure vertex attributes(s). 399 | // glBindVertexArray(VAO); 400 | 401 | // glBindBuffer(GL_ARRAY_BUFFER, VBO); 402 | // glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices, GL_STATIC_DRAW); 403 | 404 | // glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 3 * sizeof(float), (void*)0); 405 | // glEnableVertexAttribArray(0); 406 | 407 | // // note that this is allowed, the call to glVertexAttribPointer registered VBO as the vertex attribute's bound vertex buffer object so afterwards we can safely unbind 408 | // glBindBuffer(GL_ARRAY_BUFFER, 0); 409 | 410 | // // You can unbind the VAO afterwards so other VAO calls won't accidentally modify this VAO, but this rarely happens. Modifying other 411 | // // VAOs requires a call to glBindVertexArray anyways so we generally don't unbind VAOs (nor VBOs) when it's not directly necessary. 412 | // glBindVertexArray(0); 413 | 414 | 415 | // // uncomment this call to draw in wireframe polygons. 416 | // //glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); 417 | 418 | // // render loop 419 | // // ----------- 420 | // while (!glfwWindowShouldClose(window)) 421 | // { 422 | // // input 423 | // // ----- 424 | // processInput(window); 425 | 426 | // // render 427 | // // ------ 428 | // glClearColor(0.2f, 0.3f, 0.3f, 1.0f); 429 | // glClear(GL_COLOR_BUFFER_BIT); 430 | 431 | // // draw our first triangle 432 | // glUseProgram(shaderProgram); 433 | // glBindVertexArray(VAO); // seeing as we only have a single VAO there's no need to bind it every time, but we'll do so to keep things a bit more organized 434 | // glDrawArrays(GL_TRIANGLES, 0, 3); 435 | // // glBindVertexArray(0); // no need to unbind it every time 436 | 437 | // // glfw: swap buffers and poll IO events (keys pressed/released, mouse moved etc.) 438 | // // ------------------------------------------------------------------------------- 439 | // glfwSwapBuffers(window); 440 | // glfwPollEvents(); 441 | // } 442 | 443 | // // optional: de-allocate all resources once they've outlived their purpose: 444 | // // ------------------------------------------------------------------------ 445 | // glDeleteVertexArrays(1, &VAO); 446 | // glDeleteBuffers(1, &VBO); 447 | 448 | // // glfw: terminate, clearing all previously allocated GLFW resources. 449 | // // ------------------------------------------------------------------ 450 | // glfwTerminate(); 451 | // return 0; 452 | //} 453 | 454 | //// process all input: query GLFW whether relevant keys are pressed/released this frame and react accordingly 455 | //// --------------------------------------------------------------------------------------------------------- 456 | //void processInput(GLFWwindow *window) 457 | //{ 458 | // if (glfwGetKey(window, GLFW_KEY_ESCAPE) == GLFW_PRESS) 459 | // glfwSetWindowShouldClose(window, true); 460 | //} 461 | 462 | //// glfw: whenever the window size changed (by OS or user resize) this callback function executes 463 | //// --------------------------------------------------------------------------------------------- 464 | //void framebuffer_size_callback(GLFWwindow* window, int width, int height) 465 | //{ 466 | // // make sure the viewport matches the new window dimensions; note that width and 467 | // // height will be significantly larger than specified on retina displays. 468 | // glViewport(0, 0, width, height); 469 | //} 470 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /src/glad.c: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | OpenGL loader generated by glad 0.1.29 on Thu Mar 14 19:35:56 2019. 4 | 5 | Language/Generator: C/C++ 6 | Specification: gl 7 | APIs: gl=4.0 8 | Profile: compatibility 9 | Extensions: 10 | 11 | Loader: True 12 | Local files: True 13 | Omit khrplatform: False 14 | Reproducible: False 15 | 16 | Commandline: 17 | --profile="compatibility" --api="gl=4.0" --generator="c" --spec="gl" --local-files --extensions="" 18 | Online: 19 | https://glad.dav1d.de/#profile=compatibility&language=c&specification=gl&loader=on&api=gl%3D4.0 20 | */ 21 | 22 | #include 23 | #include 24 | #include 25 | #include 26 | 27 | static void* get_proc(const char *namez); 28 | 29 | #if defined(_WIN32) || defined(__CYGWIN__) 30 | #include 31 | static HMODULE libGL; 32 | 33 | typedef void* (APIENTRYP PFNWGLGETPROCADDRESSPROC_PRIVATE)(const char*); 34 | static PFNWGLGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; 35 | 36 | #ifdef _MSC_VER 37 | #ifdef __has_include 38 | #if __has_include() 39 | #define HAVE_WINAPIFAMILY 1 40 | #endif 41 | #elif _MSC_VER >= 1700 && !_USING_V110_SDK71_ 42 | #define HAVE_WINAPIFAMILY 1 43 | #endif 44 | #endif 45 | 46 | #ifdef HAVE_WINAPIFAMILY 47 | #include 48 | #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) 49 | #define IS_UWP 1 50 | #endif 51 | #endif 52 | 53 | static 54 | int open_gl(void) { 55 | #ifndef IS_UWP 56 | libGL = LoadLibraryW(L"opengl32.dll"); 57 | if(libGL != NULL) { 58 | void (* tmp)(void); 59 | tmp = (void(*)(void)) GetProcAddress(libGL, "wglGetProcAddress"); 60 | gladGetProcAddressPtr = (PFNWGLGETPROCADDRESSPROC_PRIVATE) tmp; 61 | return gladGetProcAddressPtr != NULL; 62 | } 63 | #endif 64 | 65 | return 0; 66 | } 67 | 68 | static 69 | void close_gl(void) { 70 | if(libGL != NULL) { 71 | FreeLibrary((HMODULE) libGL); 72 | libGL = NULL; 73 | } 74 | } 75 | #else 76 | #include 77 | static void* libGL; 78 | 79 | #if !defined(__APPLE__) && !defined(__HAIKU__) 80 | typedef void* (APIENTRYP PFNGLXGETPROCADDRESSPROC_PRIVATE)(const char*); 81 | static PFNGLXGETPROCADDRESSPROC_PRIVATE gladGetProcAddressPtr; 82 | #endif 83 | 84 | static 85 | int open_gl(void) { 86 | #ifdef __APPLE__ 87 | static const char *NAMES[] = { 88 | "../Frameworks/OpenGL.framework/OpenGL", 89 | "/Library/Frameworks/OpenGL.framework/OpenGL", 90 | "/System/Library/Frameworks/OpenGL.framework/OpenGL", 91 | "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL" 92 | }; 93 | #else 94 | static const char *NAMES[] = {"libGL.so.1", "libGL.so"}; 95 | #endif 96 | 97 | unsigned int index = 0; 98 | for(index = 0; index < (sizeof(NAMES) / sizeof(NAMES[0])); index++) { 99 | libGL = dlopen(NAMES[index], RTLD_NOW | RTLD_GLOBAL); 100 | 101 | if(libGL != NULL) { 102 | #if defined(__APPLE__) || defined(__HAIKU__) 103 | return 1; 104 | #else 105 | gladGetProcAddressPtr = (PFNGLXGETPROCADDRESSPROC_PRIVATE)dlsym(libGL, 106 | "glXGetProcAddressARB"); 107 | return gladGetProcAddressPtr != NULL; 108 | #endif 109 | } 110 | } 111 | 112 | return 0; 113 | } 114 | 115 | static 116 | void close_gl(void) { 117 | if(libGL != NULL) { 118 | dlclose(libGL); 119 | libGL = NULL; 120 | } 121 | } 122 | #endif 123 | 124 | static 125 | void* get_proc(const char *namez) { 126 | void* result = NULL; 127 | if(libGL == NULL) return NULL; 128 | 129 | #if !defined(__APPLE__) && !defined(__HAIKU__) 130 | if(gladGetProcAddressPtr != NULL) { 131 | result = gladGetProcAddressPtr(namez); 132 | } 133 | #endif 134 | if(result == NULL) { 135 | #if defined(_WIN32) || defined(__CYGWIN__) 136 | result = (void*)GetProcAddress((HMODULE) libGL, namez); 137 | #else 138 | result = dlsym(libGL, namez); 139 | #endif 140 | } 141 | 142 | return result; 143 | } 144 | 145 | int gladLoadGL(void) { 146 | int status = 0; 147 | 148 | if(open_gl()) { 149 | status = gladLoadGLLoader(&get_proc); 150 | close_gl(); 151 | } 152 | 153 | return status; 154 | } 155 | 156 | struct gladGLversionStruct GLVersion = { 0, 0 }; 157 | 158 | #if defined(GL_ES_VERSION_3_0) || defined(GL_VERSION_3_0) 159 | #define _GLAD_IS_SOME_NEW_VERSION 1 160 | #endif 161 | 162 | static int max_loaded_major; 163 | static int max_loaded_minor; 164 | 165 | static const char *exts = NULL; 166 | static int num_exts_i = 0; 167 | static char **exts_i = NULL; 168 | 169 | static int get_exts(void) { 170 | #ifdef _GLAD_IS_SOME_NEW_VERSION 171 | if(max_loaded_major < 3) { 172 | #endif 173 | exts = (const char *)glGetString(GL_EXTENSIONS); 174 | #ifdef _GLAD_IS_SOME_NEW_VERSION 175 | } else { 176 | unsigned int index; 177 | 178 | num_exts_i = 0; 179 | glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts_i); 180 | if (num_exts_i > 0) { 181 | exts_i = (char **)malloc((size_t)num_exts_i * (sizeof *exts_i)); 182 | } 183 | 184 | if (exts_i == NULL) { 185 | return 0; 186 | } 187 | 188 | for(index = 0; index < (unsigned)num_exts_i; index++) { 189 | const char *gl_str_tmp = (const char*)glGetStringi(GL_EXTENSIONS, index); 190 | size_t len = strlen(gl_str_tmp); 191 | 192 | char *local_str = (char*)malloc((len+1) * sizeof(char)); 193 | if(local_str != NULL) { 194 | memcpy(local_str, gl_str_tmp, (len+1) * sizeof(char)); 195 | } 196 | exts_i[index] = local_str; 197 | } 198 | } 199 | #endif 200 | return 1; 201 | } 202 | 203 | static void free_exts(void) { 204 | if (exts_i != NULL) { 205 | int index; 206 | for(index = 0; index < num_exts_i; index++) { 207 | free((char *)exts_i[index]); 208 | } 209 | free((void *)exts_i); 210 | exts_i = NULL; 211 | } 212 | } 213 | 214 | static int has_ext(const char *ext) { 215 | #ifdef _GLAD_IS_SOME_NEW_VERSION 216 | if(max_loaded_major < 3) { 217 | #endif 218 | const char *extensions; 219 | const char *loc; 220 | const char *terminator; 221 | extensions = exts; 222 | if(extensions == NULL || ext == NULL) { 223 | return 0; 224 | } 225 | 226 | while(1) { 227 | loc = strstr(extensions, ext); 228 | if(loc == NULL) { 229 | return 0; 230 | } 231 | 232 | terminator = loc + strlen(ext); 233 | if((loc == extensions || *(loc - 1) == ' ') && 234 | (*terminator == ' ' || *terminator == '\0')) { 235 | return 1; 236 | } 237 | extensions = terminator; 238 | } 239 | #ifdef _GLAD_IS_SOME_NEW_VERSION 240 | } else { 241 | int index; 242 | if(exts_i == NULL) return 0; 243 | for(index = 0; index < num_exts_i; index++) { 244 | const char *e = exts_i[index]; 245 | 246 | if(exts_i[index] != NULL && strcmp(e, ext) == 0) { 247 | return 1; 248 | } 249 | } 250 | } 251 | #endif 252 | 253 | return 0; 254 | } 255 | int GLAD_GL_VERSION_1_0 = 0; 256 | int GLAD_GL_VERSION_1_1 = 0; 257 | int GLAD_GL_VERSION_1_2 = 0; 258 | int GLAD_GL_VERSION_1_3 = 0; 259 | int GLAD_GL_VERSION_1_4 = 0; 260 | int GLAD_GL_VERSION_1_5 = 0; 261 | int GLAD_GL_VERSION_2_0 = 0; 262 | int GLAD_GL_VERSION_2_1 = 0; 263 | int GLAD_GL_VERSION_3_0 = 0; 264 | int GLAD_GL_VERSION_3_1 = 0; 265 | int GLAD_GL_VERSION_3_2 = 0; 266 | int GLAD_GL_VERSION_3_3 = 0; 267 | int GLAD_GL_VERSION_4_0 = 0; 268 | PFNGLACCUMPROC glad_glAccum = NULL; 269 | PFNGLACTIVETEXTUREPROC glad_glActiveTexture = NULL; 270 | PFNGLALPHAFUNCPROC glad_glAlphaFunc = NULL; 271 | PFNGLARETEXTURESRESIDENTPROC glad_glAreTexturesResident = NULL; 272 | PFNGLARRAYELEMENTPROC glad_glArrayElement = NULL; 273 | PFNGLATTACHSHADERPROC glad_glAttachShader = NULL; 274 | PFNGLBEGINPROC glad_glBegin = NULL; 275 | PFNGLBEGINCONDITIONALRENDERPROC glad_glBeginConditionalRender = NULL; 276 | PFNGLBEGINQUERYPROC glad_glBeginQuery = NULL; 277 | PFNGLBEGINQUERYINDEXEDPROC glad_glBeginQueryIndexed = NULL; 278 | PFNGLBEGINTRANSFORMFEEDBACKPROC glad_glBeginTransformFeedback = NULL; 279 | PFNGLBINDATTRIBLOCATIONPROC glad_glBindAttribLocation = NULL; 280 | PFNGLBINDBUFFERPROC glad_glBindBuffer = NULL; 281 | PFNGLBINDBUFFERBASEPROC glad_glBindBufferBase = NULL; 282 | PFNGLBINDBUFFERRANGEPROC glad_glBindBufferRange = NULL; 283 | PFNGLBINDFRAGDATALOCATIONPROC glad_glBindFragDataLocation = NULL; 284 | PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glad_glBindFragDataLocationIndexed = NULL; 285 | PFNGLBINDFRAMEBUFFERPROC glad_glBindFramebuffer = NULL; 286 | PFNGLBINDRENDERBUFFERPROC glad_glBindRenderbuffer = NULL; 287 | PFNGLBINDSAMPLERPROC glad_glBindSampler = NULL; 288 | PFNGLBINDTEXTUREPROC glad_glBindTexture = NULL; 289 | PFNGLBINDTRANSFORMFEEDBACKPROC glad_glBindTransformFeedback = NULL; 290 | PFNGLBINDVERTEXARRAYPROC glad_glBindVertexArray = NULL; 291 | PFNGLBITMAPPROC glad_glBitmap = NULL; 292 | PFNGLBLENDCOLORPROC glad_glBlendColor = NULL; 293 | PFNGLBLENDEQUATIONPROC glad_glBlendEquation = NULL; 294 | PFNGLBLENDEQUATIONSEPARATEPROC glad_glBlendEquationSeparate = NULL; 295 | PFNGLBLENDEQUATIONSEPARATEIPROC glad_glBlendEquationSeparatei = NULL; 296 | PFNGLBLENDEQUATIONIPROC glad_glBlendEquationi = NULL; 297 | PFNGLBLENDFUNCPROC glad_glBlendFunc = NULL; 298 | PFNGLBLENDFUNCSEPARATEPROC glad_glBlendFuncSeparate = NULL; 299 | PFNGLBLENDFUNCSEPARATEIPROC glad_glBlendFuncSeparatei = NULL; 300 | PFNGLBLENDFUNCIPROC glad_glBlendFunci = NULL; 301 | PFNGLBLITFRAMEBUFFERPROC glad_glBlitFramebuffer = NULL; 302 | PFNGLBUFFERDATAPROC glad_glBufferData = NULL; 303 | PFNGLBUFFERSUBDATAPROC glad_glBufferSubData = NULL; 304 | PFNGLCALLLISTPROC glad_glCallList = NULL; 305 | PFNGLCALLLISTSPROC glad_glCallLists = NULL; 306 | PFNGLCHECKFRAMEBUFFERSTATUSPROC glad_glCheckFramebufferStatus = NULL; 307 | PFNGLCLAMPCOLORPROC glad_glClampColor = NULL; 308 | PFNGLCLEARPROC glad_glClear = NULL; 309 | PFNGLCLEARACCUMPROC glad_glClearAccum = NULL; 310 | PFNGLCLEARBUFFERFIPROC glad_glClearBufferfi = NULL; 311 | PFNGLCLEARBUFFERFVPROC glad_glClearBufferfv = NULL; 312 | PFNGLCLEARBUFFERIVPROC glad_glClearBufferiv = NULL; 313 | PFNGLCLEARBUFFERUIVPROC glad_glClearBufferuiv = NULL; 314 | PFNGLCLEARCOLORPROC glad_glClearColor = NULL; 315 | PFNGLCLEARDEPTHPROC glad_glClearDepth = NULL; 316 | PFNGLCLEARINDEXPROC glad_glClearIndex = NULL; 317 | PFNGLCLEARSTENCILPROC glad_glClearStencil = NULL; 318 | PFNGLCLIENTACTIVETEXTUREPROC glad_glClientActiveTexture = NULL; 319 | PFNGLCLIENTWAITSYNCPROC glad_glClientWaitSync = NULL; 320 | PFNGLCLIPPLANEPROC glad_glClipPlane = NULL; 321 | PFNGLCOLOR3BPROC glad_glColor3b = NULL; 322 | PFNGLCOLOR3BVPROC glad_glColor3bv = NULL; 323 | PFNGLCOLOR3DPROC glad_glColor3d = NULL; 324 | PFNGLCOLOR3DVPROC glad_glColor3dv = NULL; 325 | PFNGLCOLOR3FPROC glad_glColor3f = NULL; 326 | PFNGLCOLOR3FVPROC glad_glColor3fv = NULL; 327 | PFNGLCOLOR3IPROC glad_glColor3i = NULL; 328 | PFNGLCOLOR3IVPROC glad_glColor3iv = NULL; 329 | PFNGLCOLOR3SPROC glad_glColor3s = NULL; 330 | PFNGLCOLOR3SVPROC glad_glColor3sv = NULL; 331 | PFNGLCOLOR3UBPROC glad_glColor3ub = NULL; 332 | PFNGLCOLOR3UBVPROC glad_glColor3ubv = NULL; 333 | PFNGLCOLOR3UIPROC glad_glColor3ui = NULL; 334 | PFNGLCOLOR3UIVPROC glad_glColor3uiv = NULL; 335 | PFNGLCOLOR3USPROC glad_glColor3us = NULL; 336 | PFNGLCOLOR3USVPROC glad_glColor3usv = NULL; 337 | PFNGLCOLOR4BPROC glad_glColor4b = NULL; 338 | PFNGLCOLOR4BVPROC glad_glColor4bv = NULL; 339 | PFNGLCOLOR4DPROC glad_glColor4d = NULL; 340 | PFNGLCOLOR4DVPROC glad_glColor4dv = NULL; 341 | PFNGLCOLOR4FPROC glad_glColor4f = NULL; 342 | PFNGLCOLOR4FVPROC glad_glColor4fv = NULL; 343 | PFNGLCOLOR4IPROC glad_glColor4i = NULL; 344 | PFNGLCOLOR4IVPROC glad_glColor4iv = NULL; 345 | PFNGLCOLOR4SPROC glad_glColor4s = NULL; 346 | PFNGLCOLOR4SVPROC glad_glColor4sv = NULL; 347 | PFNGLCOLOR4UBPROC glad_glColor4ub = NULL; 348 | PFNGLCOLOR4UBVPROC glad_glColor4ubv = NULL; 349 | PFNGLCOLOR4UIPROC glad_glColor4ui = NULL; 350 | PFNGLCOLOR4UIVPROC glad_glColor4uiv = NULL; 351 | PFNGLCOLOR4USPROC glad_glColor4us = NULL; 352 | PFNGLCOLOR4USVPROC glad_glColor4usv = NULL; 353 | PFNGLCOLORMASKPROC glad_glColorMask = NULL; 354 | PFNGLCOLORMASKIPROC glad_glColorMaski = NULL; 355 | PFNGLCOLORMATERIALPROC glad_glColorMaterial = NULL; 356 | PFNGLCOLORP3UIPROC glad_glColorP3ui = NULL; 357 | PFNGLCOLORP3UIVPROC glad_glColorP3uiv = NULL; 358 | PFNGLCOLORP4UIPROC glad_glColorP4ui = NULL; 359 | PFNGLCOLORP4UIVPROC glad_glColorP4uiv = NULL; 360 | PFNGLCOLORPOINTERPROC glad_glColorPointer = NULL; 361 | PFNGLCOMPILESHADERPROC glad_glCompileShader = NULL; 362 | PFNGLCOMPRESSEDTEXIMAGE1DPROC glad_glCompressedTexImage1D = NULL; 363 | PFNGLCOMPRESSEDTEXIMAGE2DPROC glad_glCompressedTexImage2D = NULL; 364 | PFNGLCOMPRESSEDTEXIMAGE3DPROC glad_glCompressedTexImage3D = NULL; 365 | PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glad_glCompressedTexSubImage1D = NULL; 366 | PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glad_glCompressedTexSubImage2D = NULL; 367 | PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glad_glCompressedTexSubImage3D = NULL; 368 | PFNGLCOPYBUFFERSUBDATAPROC glad_glCopyBufferSubData = NULL; 369 | PFNGLCOPYPIXELSPROC glad_glCopyPixels = NULL; 370 | PFNGLCOPYTEXIMAGE1DPROC glad_glCopyTexImage1D = NULL; 371 | PFNGLCOPYTEXIMAGE2DPROC glad_glCopyTexImage2D = NULL; 372 | PFNGLCOPYTEXSUBIMAGE1DPROC glad_glCopyTexSubImage1D = NULL; 373 | PFNGLCOPYTEXSUBIMAGE2DPROC glad_glCopyTexSubImage2D = NULL; 374 | PFNGLCOPYTEXSUBIMAGE3DPROC glad_glCopyTexSubImage3D = NULL; 375 | PFNGLCREATEPROGRAMPROC glad_glCreateProgram = NULL; 376 | PFNGLCREATESHADERPROC glad_glCreateShader = NULL; 377 | PFNGLCULLFACEPROC glad_glCullFace = NULL; 378 | PFNGLDELETEBUFFERSPROC glad_glDeleteBuffers = NULL; 379 | PFNGLDELETEFRAMEBUFFERSPROC glad_glDeleteFramebuffers = NULL; 380 | PFNGLDELETELISTSPROC glad_glDeleteLists = NULL; 381 | PFNGLDELETEPROGRAMPROC glad_glDeleteProgram = NULL; 382 | PFNGLDELETEQUERIESPROC glad_glDeleteQueries = NULL; 383 | PFNGLDELETERENDERBUFFERSPROC glad_glDeleteRenderbuffers = NULL; 384 | PFNGLDELETESAMPLERSPROC glad_glDeleteSamplers = NULL; 385 | PFNGLDELETESHADERPROC glad_glDeleteShader = NULL; 386 | PFNGLDELETESYNCPROC glad_glDeleteSync = NULL; 387 | PFNGLDELETETEXTURESPROC glad_glDeleteTextures = NULL; 388 | PFNGLDELETETRANSFORMFEEDBACKSPROC glad_glDeleteTransformFeedbacks = NULL; 389 | PFNGLDELETEVERTEXARRAYSPROC glad_glDeleteVertexArrays = NULL; 390 | PFNGLDEPTHFUNCPROC glad_glDepthFunc = NULL; 391 | PFNGLDEPTHMASKPROC glad_glDepthMask = NULL; 392 | PFNGLDEPTHRANGEPROC glad_glDepthRange = NULL; 393 | PFNGLDETACHSHADERPROC glad_glDetachShader = NULL; 394 | PFNGLDISABLEPROC glad_glDisable = NULL; 395 | PFNGLDISABLECLIENTSTATEPROC glad_glDisableClientState = NULL; 396 | PFNGLDISABLEVERTEXATTRIBARRAYPROC glad_glDisableVertexAttribArray = NULL; 397 | PFNGLDISABLEIPROC glad_glDisablei = NULL; 398 | PFNGLDRAWARRAYSPROC glad_glDrawArrays = NULL; 399 | PFNGLDRAWARRAYSINDIRECTPROC glad_glDrawArraysIndirect = NULL; 400 | PFNGLDRAWARRAYSINSTANCEDPROC glad_glDrawArraysInstanced = NULL; 401 | PFNGLDRAWBUFFERPROC glad_glDrawBuffer = NULL; 402 | PFNGLDRAWBUFFERSPROC glad_glDrawBuffers = NULL; 403 | PFNGLDRAWELEMENTSPROC glad_glDrawElements = NULL; 404 | PFNGLDRAWELEMENTSBASEVERTEXPROC glad_glDrawElementsBaseVertex = NULL; 405 | PFNGLDRAWELEMENTSINDIRECTPROC glad_glDrawElementsIndirect = NULL; 406 | PFNGLDRAWELEMENTSINSTANCEDPROC glad_glDrawElementsInstanced = NULL; 407 | PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glad_glDrawElementsInstancedBaseVertex = NULL; 408 | PFNGLDRAWPIXELSPROC glad_glDrawPixels = NULL; 409 | PFNGLDRAWRANGEELEMENTSPROC glad_glDrawRangeElements = NULL; 410 | PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glad_glDrawRangeElementsBaseVertex = NULL; 411 | PFNGLDRAWTRANSFORMFEEDBACKPROC glad_glDrawTransformFeedback = NULL; 412 | PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC glad_glDrawTransformFeedbackStream = NULL; 413 | PFNGLEDGEFLAGPROC glad_glEdgeFlag = NULL; 414 | PFNGLEDGEFLAGPOINTERPROC glad_glEdgeFlagPointer = NULL; 415 | PFNGLEDGEFLAGVPROC glad_glEdgeFlagv = NULL; 416 | PFNGLENABLEPROC glad_glEnable = NULL; 417 | PFNGLENABLECLIENTSTATEPROC glad_glEnableClientState = NULL; 418 | PFNGLENABLEVERTEXATTRIBARRAYPROC glad_glEnableVertexAttribArray = NULL; 419 | PFNGLENABLEIPROC glad_glEnablei = NULL; 420 | PFNGLENDPROC glad_glEnd = NULL; 421 | PFNGLENDCONDITIONALRENDERPROC glad_glEndConditionalRender = NULL; 422 | PFNGLENDLISTPROC glad_glEndList = NULL; 423 | PFNGLENDQUERYPROC glad_glEndQuery = NULL; 424 | PFNGLENDQUERYINDEXEDPROC glad_glEndQueryIndexed = NULL; 425 | PFNGLENDTRANSFORMFEEDBACKPROC glad_glEndTransformFeedback = NULL; 426 | PFNGLEVALCOORD1DPROC glad_glEvalCoord1d = NULL; 427 | PFNGLEVALCOORD1DVPROC glad_glEvalCoord1dv = NULL; 428 | PFNGLEVALCOORD1FPROC glad_glEvalCoord1f = NULL; 429 | PFNGLEVALCOORD1FVPROC glad_glEvalCoord1fv = NULL; 430 | PFNGLEVALCOORD2DPROC glad_glEvalCoord2d = NULL; 431 | PFNGLEVALCOORD2DVPROC glad_glEvalCoord2dv = NULL; 432 | PFNGLEVALCOORD2FPROC glad_glEvalCoord2f = NULL; 433 | PFNGLEVALCOORD2FVPROC glad_glEvalCoord2fv = NULL; 434 | PFNGLEVALMESH1PROC glad_glEvalMesh1 = NULL; 435 | PFNGLEVALMESH2PROC glad_glEvalMesh2 = NULL; 436 | PFNGLEVALPOINT1PROC glad_glEvalPoint1 = NULL; 437 | PFNGLEVALPOINT2PROC glad_glEvalPoint2 = NULL; 438 | PFNGLFEEDBACKBUFFERPROC glad_glFeedbackBuffer = NULL; 439 | PFNGLFENCESYNCPROC glad_glFenceSync = NULL; 440 | PFNGLFINISHPROC glad_glFinish = NULL; 441 | PFNGLFLUSHPROC glad_glFlush = NULL; 442 | PFNGLFLUSHMAPPEDBUFFERRANGEPROC glad_glFlushMappedBufferRange = NULL; 443 | PFNGLFOGCOORDPOINTERPROC glad_glFogCoordPointer = NULL; 444 | PFNGLFOGCOORDDPROC glad_glFogCoordd = NULL; 445 | PFNGLFOGCOORDDVPROC glad_glFogCoorddv = NULL; 446 | PFNGLFOGCOORDFPROC glad_glFogCoordf = NULL; 447 | PFNGLFOGCOORDFVPROC glad_glFogCoordfv = NULL; 448 | PFNGLFOGFPROC glad_glFogf = NULL; 449 | PFNGLFOGFVPROC glad_glFogfv = NULL; 450 | PFNGLFOGIPROC glad_glFogi = NULL; 451 | PFNGLFOGIVPROC glad_glFogiv = NULL; 452 | PFNGLFRAMEBUFFERRENDERBUFFERPROC glad_glFramebufferRenderbuffer = NULL; 453 | PFNGLFRAMEBUFFERTEXTUREPROC glad_glFramebufferTexture = NULL; 454 | PFNGLFRAMEBUFFERTEXTURE1DPROC glad_glFramebufferTexture1D = NULL; 455 | PFNGLFRAMEBUFFERTEXTURE2DPROC glad_glFramebufferTexture2D = NULL; 456 | PFNGLFRAMEBUFFERTEXTURE3DPROC glad_glFramebufferTexture3D = NULL; 457 | PFNGLFRAMEBUFFERTEXTURELAYERPROC glad_glFramebufferTextureLayer = NULL; 458 | PFNGLFRONTFACEPROC glad_glFrontFace = NULL; 459 | PFNGLFRUSTUMPROC glad_glFrustum = NULL; 460 | PFNGLGENBUFFERSPROC glad_glGenBuffers = NULL; 461 | PFNGLGENFRAMEBUFFERSPROC glad_glGenFramebuffers = NULL; 462 | PFNGLGENLISTSPROC glad_glGenLists = NULL; 463 | PFNGLGENQUERIESPROC glad_glGenQueries = NULL; 464 | PFNGLGENRENDERBUFFERSPROC glad_glGenRenderbuffers = NULL; 465 | PFNGLGENSAMPLERSPROC glad_glGenSamplers = NULL; 466 | PFNGLGENTEXTURESPROC glad_glGenTextures = NULL; 467 | PFNGLGENTRANSFORMFEEDBACKSPROC glad_glGenTransformFeedbacks = NULL; 468 | PFNGLGENVERTEXARRAYSPROC glad_glGenVertexArrays = NULL; 469 | PFNGLGENERATEMIPMAPPROC glad_glGenerateMipmap = NULL; 470 | PFNGLGETACTIVEATTRIBPROC glad_glGetActiveAttrib = NULL; 471 | PFNGLGETACTIVESUBROUTINENAMEPROC glad_glGetActiveSubroutineName = NULL; 472 | PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC glad_glGetActiveSubroutineUniformName = NULL; 473 | PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC glad_glGetActiveSubroutineUniformiv = NULL; 474 | PFNGLGETACTIVEUNIFORMPROC glad_glGetActiveUniform = NULL; 475 | PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glad_glGetActiveUniformBlockName = NULL; 476 | PFNGLGETACTIVEUNIFORMBLOCKIVPROC glad_glGetActiveUniformBlockiv = NULL; 477 | PFNGLGETACTIVEUNIFORMNAMEPROC glad_glGetActiveUniformName = NULL; 478 | PFNGLGETACTIVEUNIFORMSIVPROC glad_glGetActiveUniformsiv = NULL; 479 | PFNGLGETATTACHEDSHADERSPROC glad_glGetAttachedShaders = NULL; 480 | PFNGLGETATTRIBLOCATIONPROC glad_glGetAttribLocation = NULL; 481 | PFNGLGETBOOLEANI_VPROC glad_glGetBooleani_v = NULL; 482 | PFNGLGETBOOLEANVPROC glad_glGetBooleanv = NULL; 483 | PFNGLGETBUFFERPARAMETERI64VPROC glad_glGetBufferParameteri64v = NULL; 484 | PFNGLGETBUFFERPARAMETERIVPROC glad_glGetBufferParameteriv = NULL; 485 | PFNGLGETBUFFERPOINTERVPROC glad_glGetBufferPointerv = NULL; 486 | PFNGLGETBUFFERSUBDATAPROC glad_glGetBufferSubData = NULL; 487 | PFNGLGETCLIPPLANEPROC glad_glGetClipPlane = NULL; 488 | PFNGLGETCOMPRESSEDTEXIMAGEPROC glad_glGetCompressedTexImage = NULL; 489 | PFNGLGETDOUBLEVPROC glad_glGetDoublev = NULL; 490 | PFNGLGETERRORPROC glad_glGetError = NULL; 491 | PFNGLGETFLOATVPROC glad_glGetFloatv = NULL; 492 | PFNGLGETFRAGDATAINDEXPROC glad_glGetFragDataIndex = NULL; 493 | PFNGLGETFRAGDATALOCATIONPROC glad_glGetFragDataLocation = NULL; 494 | PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glad_glGetFramebufferAttachmentParameteriv = NULL; 495 | PFNGLGETINTEGER64I_VPROC glad_glGetInteger64i_v = NULL; 496 | PFNGLGETINTEGER64VPROC glad_glGetInteger64v = NULL; 497 | PFNGLGETINTEGERI_VPROC glad_glGetIntegeri_v = NULL; 498 | PFNGLGETINTEGERVPROC glad_glGetIntegerv = NULL; 499 | PFNGLGETLIGHTFVPROC glad_glGetLightfv = NULL; 500 | PFNGLGETLIGHTIVPROC glad_glGetLightiv = NULL; 501 | PFNGLGETMAPDVPROC glad_glGetMapdv = NULL; 502 | PFNGLGETMAPFVPROC glad_glGetMapfv = NULL; 503 | PFNGLGETMAPIVPROC glad_glGetMapiv = NULL; 504 | PFNGLGETMATERIALFVPROC glad_glGetMaterialfv = NULL; 505 | PFNGLGETMATERIALIVPROC glad_glGetMaterialiv = NULL; 506 | PFNGLGETMULTISAMPLEFVPROC glad_glGetMultisamplefv = NULL; 507 | PFNGLGETPIXELMAPFVPROC glad_glGetPixelMapfv = NULL; 508 | PFNGLGETPIXELMAPUIVPROC glad_glGetPixelMapuiv = NULL; 509 | PFNGLGETPIXELMAPUSVPROC glad_glGetPixelMapusv = NULL; 510 | PFNGLGETPOINTERVPROC glad_glGetPointerv = NULL; 511 | PFNGLGETPOLYGONSTIPPLEPROC glad_glGetPolygonStipple = NULL; 512 | PFNGLGETPROGRAMINFOLOGPROC glad_glGetProgramInfoLog = NULL; 513 | PFNGLGETPROGRAMSTAGEIVPROC glad_glGetProgramStageiv = NULL; 514 | PFNGLGETPROGRAMIVPROC glad_glGetProgramiv = NULL; 515 | PFNGLGETQUERYINDEXEDIVPROC glad_glGetQueryIndexediv = NULL; 516 | PFNGLGETQUERYOBJECTI64VPROC glad_glGetQueryObjecti64v = NULL; 517 | PFNGLGETQUERYOBJECTIVPROC glad_glGetQueryObjectiv = NULL; 518 | PFNGLGETQUERYOBJECTUI64VPROC glad_glGetQueryObjectui64v = NULL; 519 | PFNGLGETQUERYOBJECTUIVPROC glad_glGetQueryObjectuiv = NULL; 520 | PFNGLGETQUERYIVPROC glad_glGetQueryiv = NULL; 521 | PFNGLGETRENDERBUFFERPARAMETERIVPROC glad_glGetRenderbufferParameteriv = NULL; 522 | PFNGLGETSAMPLERPARAMETERIIVPROC glad_glGetSamplerParameterIiv = NULL; 523 | PFNGLGETSAMPLERPARAMETERIUIVPROC glad_glGetSamplerParameterIuiv = NULL; 524 | PFNGLGETSAMPLERPARAMETERFVPROC glad_glGetSamplerParameterfv = NULL; 525 | PFNGLGETSAMPLERPARAMETERIVPROC glad_glGetSamplerParameteriv = NULL; 526 | PFNGLGETSHADERINFOLOGPROC glad_glGetShaderInfoLog = NULL; 527 | PFNGLGETSHADERSOURCEPROC glad_glGetShaderSource = NULL; 528 | PFNGLGETSHADERIVPROC glad_glGetShaderiv = NULL; 529 | PFNGLGETSTRINGPROC glad_glGetString = NULL; 530 | PFNGLGETSTRINGIPROC glad_glGetStringi = NULL; 531 | PFNGLGETSUBROUTINEINDEXPROC glad_glGetSubroutineIndex = NULL; 532 | PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC glad_glGetSubroutineUniformLocation = NULL; 533 | PFNGLGETSYNCIVPROC glad_glGetSynciv = NULL; 534 | PFNGLGETTEXENVFVPROC glad_glGetTexEnvfv = NULL; 535 | PFNGLGETTEXENVIVPROC glad_glGetTexEnviv = NULL; 536 | PFNGLGETTEXGENDVPROC glad_glGetTexGendv = NULL; 537 | PFNGLGETTEXGENFVPROC glad_glGetTexGenfv = NULL; 538 | PFNGLGETTEXGENIVPROC glad_glGetTexGeniv = NULL; 539 | PFNGLGETTEXIMAGEPROC glad_glGetTexImage = NULL; 540 | PFNGLGETTEXLEVELPARAMETERFVPROC glad_glGetTexLevelParameterfv = NULL; 541 | PFNGLGETTEXLEVELPARAMETERIVPROC glad_glGetTexLevelParameteriv = NULL; 542 | PFNGLGETTEXPARAMETERIIVPROC glad_glGetTexParameterIiv = NULL; 543 | PFNGLGETTEXPARAMETERIUIVPROC glad_glGetTexParameterIuiv = NULL; 544 | PFNGLGETTEXPARAMETERFVPROC glad_glGetTexParameterfv = NULL; 545 | PFNGLGETTEXPARAMETERIVPROC glad_glGetTexParameteriv = NULL; 546 | PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glad_glGetTransformFeedbackVarying = NULL; 547 | PFNGLGETUNIFORMBLOCKINDEXPROC glad_glGetUniformBlockIndex = NULL; 548 | PFNGLGETUNIFORMINDICESPROC glad_glGetUniformIndices = NULL; 549 | PFNGLGETUNIFORMLOCATIONPROC glad_glGetUniformLocation = NULL; 550 | PFNGLGETUNIFORMSUBROUTINEUIVPROC glad_glGetUniformSubroutineuiv = NULL; 551 | PFNGLGETUNIFORMDVPROC glad_glGetUniformdv = NULL; 552 | PFNGLGETUNIFORMFVPROC glad_glGetUniformfv = NULL; 553 | PFNGLGETUNIFORMIVPROC glad_glGetUniformiv = NULL; 554 | PFNGLGETUNIFORMUIVPROC glad_glGetUniformuiv = NULL; 555 | PFNGLGETVERTEXATTRIBIIVPROC glad_glGetVertexAttribIiv = NULL; 556 | PFNGLGETVERTEXATTRIBIUIVPROC glad_glGetVertexAttribIuiv = NULL; 557 | PFNGLGETVERTEXATTRIBPOINTERVPROC glad_glGetVertexAttribPointerv = NULL; 558 | PFNGLGETVERTEXATTRIBDVPROC glad_glGetVertexAttribdv = NULL; 559 | PFNGLGETVERTEXATTRIBFVPROC glad_glGetVertexAttribfv = NULL; 560 | PFNGLGETVERTEXATTRIBIVPROC glad_glGetVertexAttribiv = NULL; 561 | PFNGLHINTPROC glad_glHint = NULL; 562 | PFNGLINDEXMASKPROC glad_glIndexMask = NULL; 563 | PFNGLINDEXPOINTERPROC glad_glIndexPointer = NULL; 564 | PFNGLINDEXDPROC glad_glIndexd = NULL; 565 | PFNGLINDEXDVPROC glad_glIndexdv = NULL; 566 | PFNGLINDEXFPROC glad_glIndexf = NULL; 567 | PFNGLINDEXFVPROC glad_glIndexfv = NULL; 568 | PFNGLINDEXIPROC glad_glIndexi = NULL; 569 | PFNGLINDEXIVPROC glad_glIndexiv = NULL; 570 | PFNGLINDEXSPROC glad_glIndexs = NULL; 571 | PFNGLINDEXSVPROC glad_glIndexsv = NULL; 572 | PFNGLINDEXUBPROC glad_glIndexub = NULL; 573 | PFNGLINDEXUBVPROC glad_glIndexubv = NULL; 574 | PFNGLINITNAMESPROC glad_glInitNames = NULL; 575 | PFNGLINTERLEAVEDARRAYSPROC glad_glInterleavedArrays = NULL; 576 | PFNGLISBUFFERPROC glad_glIsBuffer = NULL; 577 | PFNGLISENABLEDPROC glad_glIsEnabled = NULL; 578 | PFNGLISENABLEDIPROC glad_glIsEnabledi = NULL; 579 | PFNGLISFRAMEBUFFERPROC glad_glIsFramebuffer = NULL; 580 | PFNGLISLISTPROC glad_glIsList = NULL; 581 | PFNGLISPROGRAMPROC glad_glIsProgram = NULL; 582 | PFNGLISQUERYPROC glad_glIsQuery = NULL; 583 | PFNGLISRENDERBUFFERPROC glad_glIsRenderbuffer = NULL; 584 | PFNGLISSAMPLERPROC glad_glIsSampler = NULL; 585 | PFNGLISSHADERPROC glad_glIsShader = NULL; 586 | PFNGLISSYNCPROC glad_glIsSync = NULL; 587 | PFNGLISTEXTUREPROC glad_glIsTexture = NULL; 588 | PFNGLISTRANSFORMFEEDBACKPROC glad_glIsTransformFeedback = NULL; 589 | PFNGLISVERTEXARRAYPROC glad_glIsVertexArray = NULL; 590 | PFNGLLIGHTMODELFPROC glad_glLightModelf = NULL; 591 | PFNGLLIGHTMODELFVPROC glad_glLightModelfv = NULL; 592 | PFNGLLIGHTMODELIPROC glad_glLightModeli = NULL; 593 | PFNGLLIGHTMODELIVPROC glad_glLightModeliv = NULL; 594 | PFNGLLIGHTFPROC glad_glLightf = NULL; 595 | PFNGLLIGHTFVPROC glad_glLightfv = NULL; 596 | PFNGLLIGHTIPROC glad_glLighti = NULL; 597 | PFNGLLIGHTIVPROC glad_glLightiv = NULL; 598 | PFNGLLINESTIPPLEPROC glad_glLineStipple = NULL; 599 | PFNGLLINEWIDTHPROC glad_glLineWidth = NULL; 600 | PFNGLLINKPROGRAMPROC glad_glLinkProgram = NULL; 601 | PFNGLLISTBASEPROC glad_glListBase = NULL; 602 | PFNGLLOADIDENTITYPROC glad_glLoadIdentity = NULL; 603 | PFNGLLOADMATRIXDPROC glad_glLoadMatrixd = NULL; 604 | PFNGLLOADMATRIXFPROC glad_glLoadMatrixf = NULL; 605 | PFNGLLOADNAMEPROC glad_glLoadName = NULL; 606 | PFNGLLOADTRANSPOSEMATRIXDPROC glad_glLoadTransposeMatrixd = NULL; 607 | PFNGLLOADTRANSPOSEMATRIXFPROC glad_glLoadTransposeMatrixf = NULL; 608 | PFNGLLOGICOPPROC glad_glLogicOp = NULL; 609 | PFNGLMAP1DPROC glad_glMap1d = NULL; 610 | PFNGLMAP1FPROC glad_glMap1f = NULL; 611 | PFNGLMAP2DPROC glad_glMap2d = NULL; 612 | PFNGLMAP2FPROC glad_glMap2f = NULL; 613 | PFNGLMAPBUFFERPROC glad_glMapBuffer = NULL; 614 | PFNGLMAPBUFFERRANGEPROC glad_glMapBufferRange = NULL; 615 | PFNGLMAPGRID1DPROC glad_glMapGrid1d = NULL; 616 | PFNGLMAPGRID1FPROC glad_glMapGrid1f = NULL; 617 | PFNGLMAPGRID2DPROC glad_glMapGrid2d = NULL; 618 | PFNGLMAPGRID2FPROC glad_glMapGrid2f = NULL; 619 | PFNGLMATERIALFPROC glad_glMaterialf = NULL; 620 | PFNGLMATERIALFVPROC glad_glMaterialfv = NULL; 621 | PFNGLMATERIALIPROC glad_glMateriali = NULL; 622 | PFNGLMATERIALIVPROC glad_glMaterialiv = NULL; 623 | PFNGLMATRIXMODEPROC glad_glMatrixMode = NULL; 624 | PFNGLMINSAMPLESHADINGPROC glad_glMinSampleShading = NULL; 625 | PFNGLMULTMATRIXDPROC glad_glMultMatrixd = NULL; 626 | PFNGLMULTMATRIXFPROC glad_glMultMatrixf = NULL; 627 | PFNGLMULTTRANSPOSEMATRIXDPROC glad_glMultTransposeMatrixd = NULL; 628 | PFNGLMULTTRANSPOSEMATRIXFPROC glad_glMultTransposeMatrixf = NULL; 629 | PFNGLMULTIDRAWARRAYSPROC glad_glMultiDrawArrays = NULL; 630 | PFNGLMULTIDRAWELEMENTSPROC glad_glMultiDrawElements = NULL; 631 | PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glad_glMultiDrawElementsBaseVertex = NULL; 632 | PFNGLMULTITEXCOORD1DPROC glad_glMultiTexCoord1d = NULL; 633 | PFNGLMULTITEXCOORD1DVPROC glad_glMultiTexCoord1dv = NULL; 634 | PFNGLMULTITEXCOORD1FPROC glad_glMultiTexCoord1f = NULL; 635 | PFNGLMULTITEXCOORD1FVPROC glad_glMultiTexCoord1fv = NULL; 636 | PFNGLMULTITEXCOORD1IPROC glad_glMultiTexCoord1i = NULL; 637 | PFNGLMULTITEXCOORD1IVPROC glad_glMultiTexCoord1iv = NULL; 638 | PFNGLMULTITEXCOORD1SPROC glad_glMultiTexCoord1s = NULL; 639 | PFNGLMULTITEXCOORD1SVPROC glad_glMultiTexCoord1sv = NULL; 640 | PFNGLMULTITEXCOORD2DPROC glad_glMultiTexCoord2d = NULL; 641 | PFNGLMULTITEXCOORD2DVPROC glad_glMultiTexCoord2dv = NULL; 642 | PFNGLMULTITEXCOORD2FPROC glad_glMultiTexCoord2f = NULL; 643 | PFNGLMULTITEXCOORD2FVPROC glad_glMultiTexCoord2fv = NULL; 644 | PFNGLMULTITEXCOORD2IPROC glad_glMultiTexCoord2i = NULL; 645 | PFNGLMULTITEXCOORD2IVPROC glad_glMultiTexCoord2iv = NULL; 646 | PFNGLMULTITEXCOORD2SPROC glad_glMultiTexCoord2s = NULL; 647 | PFNGLMULTITEXCOORD2SVPROC glad_glMultiTexCoord2sv = NULL; 648 | PFNGLMULTITEXCOORD3DPROC glad_glMultiTexCoord3d = NULL; 649 | PFNGLMULTITEXCOORD3DVPROC glad_glMultiTexCoord3dv = NULL; 650 | PFNGLMULTITEXCOORD3FPROC glad_glMultiTexCoord3f = NULL; 651 | PFNGLMULTITEXCOORD3FVPROC glad_glMultiTexCoord3fv = NULL; 652 | PFNGLMULTITEXCOORD3IPROC glad_glMultiTexCoord3i = NULL; 653 | PFNGLMULTITEXCOORD3IVPROC glad_glMultiTexCoord3iv = NULL; 654 | PFNGLMULTITEXCOORD3SPROC glad_glMultiTexCoord3s = NULL; 655 | PFNGLMULTITEXCOORD3SVPROC glad_glMultiTexCoord3sv = NULL; 656 | PFNGLMULTITEXCOORD4DPROC glad_glMultiTexCoord4d = NULL; 657 | PFNGLMULTITEXCOORD4DVPROC glad_glMultiTexCoord4dv = NULL; 658 | PFNGLMULTITEXCOORD4FPROC glad_glMultiTexCoord4f = NULL; 659 | PFNGLMULTITEXCOORD4FVPROC glad_glMultiTexCoord4fv = NULL; 660 | PFNGLMULTITEXCOORD4IPROC glad_glMultiTexCoord4i = NULL; 661 | PFNGLMULTITEXCOORD4IVPROC glad_glMultiTexCoord4iv = NULL; 662 | PFNGLMULTITEXCOORD4SPROC glad_glMultiTexCoord4s = NULL; 663 | PFNGLMULTITEXCOORD4SVPROC glad_glMultiTexCoord4sv = NULL; 664 | PFNGLMULTITEXCOORDP1UIPROC glad_glMultiTexCoordP1ui = NULL; 665 | PFNGLMULTITEXCOORDP1UIVPROC glad_glMultiTexCoordP1uiv = NULL; 666 | PFNGLMULTITEXCOORDP2UIPROC glad_glMultiTexCoordP2ui = NULL; 667 | PFNGLMULTITEXCOORDP2UIVPROC glad_glMultiTexCoordP2uiv = NULL; 668 | PFNGLMULTITEXCOORDP3UIPROC glad_glMultiTexCoordP3ui = NULL; 669 | PFNGLMULTITEXCOORDP3UIVPROC glad_glMultiTexCoordP3uiv = NULL; 670 | PFNGLMULTITEXCOORDP4UIPROC glad_glMultiTexCoordP4ui = NULL; 671 | PFNGLMULTITEXCOORDP4UIVPROC glad_glMultiTexCoordP4uiv = NULL; 672 | PFNGLNEWLISTPROC glad_glNewList = NULL; 673 | PFNGLNORMAL3BPROC glad_glNormal3b = NULL; 674 | PFNGLNORMAL3BVPROC glad_glNormal3bv = NULL; 675 | PFNGLNORMAL3DPROC glad_glNormal3d = NULL; 676 | PFNGLNORMAL3DVPROC glad_glNormal3dv = NULL; 677 | PFNGLNORMAL3FPROC glad_glNormal3f = NULL; 678 | PFNGLNORMAL3FVPROC glad_glNormal3fv = NULL; 679 | PFNGLNORMAL3IPROC glad_glNormal3i = NULL; 680 | PFNGLNORMAL3IVPROC glad_glNormal3iv = NULL; 681 | PFNGLNORMAL3SPROC glad_glNormal3s = NULL; 682 | PFNGLNORMAL3SVPROC glad_glNormal3sv = NULL; 683 | PFNGLNORMALP3UIPROC glad_glNormalP3ui = NULL; 684 | PFNGLNORMALP3UIVPROC glad_glNormalP3uiv = NULL; 685 | PFNGLNORMALPOINTERPROC glad_glNormalPointer = NULL; 686 | PFNGLORTHOPROC glad_glOrtho = NULL; 687 | PFNGLPASSTHROUGHPROC glad_glPassThrough = NULL; 688 | PFNGLPATCHPARAMETERFVPROC glad_glPatchParameterfv = NULL; 689 | PFNGLPATCHPARAMETERIPROC glad_glPatchParameteri = NULL; 690 | PFNGLPAUSETRANSFORMFEEDBACKPROC glad_glPauseTransformFeedback = NULL; 691 | PFNGLPIXELMAPFVPROC glad_glPixelMapfv = NULL; 692 | PFNGLPIXELMAPUIVPROC glad_glPixelMapuiv = NULL; 693 | PFNGLPIXELMAPUSVPROC glad_glPixelMapusv = NULL; 694 | PFNGLPIXELSTOREFPROC glad_glPixelStoref = NULL; 695 | PFNGLPIXELSTOREIPROC glad_glPixelStorei = NULL; 696 | PFNGLPIXELTRANSFERFPROC glad_glPixelTransferf = NULL; 697 | PFNGLPIXELTRANSFERIPROC glad_glPixelTransferi = NULL; 698 | PFNGLPIXELZOOMPROC glad_glPixelZoom = NULL; 699 | PFNGLPOINTPARAMETERFPROC glad_glPointParameterf = NULL; 700 | PFNGLPOINTPARAMETERFVPROC glad_glPointParameterfv = NULL; 701 | PFNGLPOINTPARAMETERIPROC glad_glPointParameteri = NULL; 702 | PFNGLPOINTPARAMETERIVPROC glad_glPointParameteriv = NULL; 703 | PFNGLPOINTSIZEPROC glad_glPointSize = NULL; 704 | PFNGLPOLYGONMODEPROC glad_glPolygonMode = NULL; 705 | PFNGLPOLYGONOFFSETPROC glad_glPolygonOffset = NULL; 706 | PFNGLPOLYGONSTIPPLEPROC glad_glPolygonStipple = NULL; 707 | PFNGLPOPATTRIBPROC glad_glPopAttrib = NULL; 708 | PFNGLPOPCLIENTATTRIBPROC glad_glPopClientAttrib = NULL; 709 | PFNGLPOPMATRIXPROC glad_glPopMatrix = NULL; 710 | PFNGLPOPNAMEPROC glad_glPopName = NULL; 711 | PFNGLPRIMITIVERESTARTINDEXPROC glad_glPrimitiveRestartIndex = NULL; 712 | PFNGLPRIORITIZETEXTURESPROC glad_glPrioritizeTextures = NULL; 713 | PFNGLPROVOKINGVERTEXPROC glad_glProvokingVertex = NULL; 714 | PFNGLPUSHATTRIBPROC glad_glPushAttrib = NULL; 715 | PFNGLPUSHCLIENTATTRIBPROC glad_glPushClientAttrib = NULL; 716 | PFNGLPUSHMATRIXPROC glad_glPushMatrix = NULL; 717 | PFNGLPUSHNAMEPROC glad_glPushName = NULL; 718 | PFNGLQUERYCOUNTERPROC glad_glQueryCounter = NULL; 719 | PFNGLRASTERPOS2DPROC glad_glRasterPos2d = NULL; 720 | PFNGLRASTERPOS2DVPROC glad_glRasterPos2dv = NULL; 721 | PFNGLRASTERPOS2FPROC glad_glRasterPos2f = NULL; 722 | PFNGLRASTERPOS2FVPROC glad_glRasterPos2fv = NULL; 723 | PFNGLRASTERPOS2IPROC glad_glRasterPos2i = NULL; 724 | PFNGLRASTERPOS2IVPROC glad_glRasterPos2iv = NULL; 725 | PFNGLRASTERPOS2SPROC glad_glRasterPos2s = NULL; 726 | PFNGLRASTERPOS2SVPROC glad_glRasterPos2sv = NULL; 727 | PFNGLRASTERPOS3DPROC glad_glRasterPos3d = NULL; 728 | PFNGLRASTERPOS3DVPROC glad_glRasterPos3dv = NULL; 729 | PFNGLRASTERPOS3FPROC glad_glRasterPos3f = NULL; 730 | PFNGLRASTERPOS3FVPROC glad_glRasterPos3fv = NULL; 731 | PFNGLRASTERPOS3IPROC glad_glRasterPos3i = NULL; 732 | PFNGLRASTERPOS3IVPROC glad_glRasterPos3iv = NULL; 733 | PFNGLRASTERPOS3SPROC glad_glRasterPos3s = NULL; 734 | PFNGLRASTERPOS3SVPROC glad_glRasterPos3sv = NULL; 735 | PFNGLRASTERPOS4DPROC glad_glRasterPos4d = NULL; 736 | PFNGLRASTERPOS4DVPROC glad_glRasterPos4dv = NULL; 737 | PFNGLRASTERPOS4FPROC glad_glRasterPos4f = NULL; 738 | PFNGLRASTERPOS4FVPROC glad_glRasterPos4fv = NULL; 739 | PFNGLRASTERPOS4IPROC glad_glRasterPos4i = NULL; 740 | PFNGLRASTERPOS4IVPROC glad_glRasterPos4iv = NULL; 741 | PFNGLRASTERPOS4SPROC glad_glRasterPos4s = NULL; 742 | PFNGLRASTERPOS4SVPROC glad_glRasterPos4sv = NULL; 743 | PFNGLREADBUFFERPROC glad_glReadBuffer = NULL; 744 | PFNGLREADPIXELSPROC glad_glReadPixels = NULL; 745 | PFNGLRECTDPROC glad_glRectd = NULL; 746 | PFNGLRECTDVPROC glad_glRectdv = NULL; 747 | PFNGLRECTFPROC glad_glRectf = NULL; 748 | PFNGLRECTFVPROC glad_glRectfv = NULL; 749 | PFNGLRECTIPROC glad_glRecti = NULL; 750 | PFNGLRECTIVPROC glad_glRectiv = NULL; 751 | PFNGLRECTSPROC glad_glRects = NULL; 752 | PFNGLRECTSVPROC glad_glRectsv = NULL; 753 | PFNGLRENDERMODEPROC glad_glRenderMode = NULL; 754 | PFNGLRENDERBUFFERSTORAGEPROC glad_glRenderbufferStorage = NULL; 755 | PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glad_glRenderbufferStorageMultisample = NULL; 756 | PFNGLRESUMETRANSFORMFEEDBACKPROC glad_glResumeTransformFeedback = NULL; 757 | PFNGLROTATEDPROC glad_glRotated = NULL; 758 | PFNGLROTATEFPROC glad_glRotatef = NULL; 759 | PFNGLSAMPLECOVERAGEPROC glad_glSampleCoverage = NULL; 760 | PFNGLSAMPLEMASKIPROC glad_glSampleMaski = NULL; 761 | PFNGLSAMPLERPARAMETERIIVPROC glad_glSamplerParameterIiv = NULL; 762 | PFNGLSAMPLERPARAMETERIUIVPROC glad_glSamplerParameterIuiv = NULL; 763 | PFNGLSAMPLERPARAMETERFPROC glad_glSamplerParameterf = NULL; 764 | PFNGLSAMPLERPARAMETERFVPROC glad_glSamplerParameterfv = NULL; 765 | PFNGLSAMPLERPARAMETERIPROC glad_glSamplerParameteri = NULL; 766 | PFNGLSAMPLERPARAMETERIVPROC glad_glSamplerParameteriv = NULL; 767 | PFNGLSCALEDPROC glad_glScaled = NULL; 768 | PFNGLSCALEFPROC glad_glScalef = NULL; 769 | PFNGLSCISSORPROC glad_glScissor = NULL; 770 | PFNGLSECONDARYCOLOR3BPROC glad_glSecondaryColor3b = NULL; 771 | PFNGLSECONDARYCOLOR3BVPROC glad_glSecondaryColor3bv = NULL; 772 | PFNGLSECONDARYCOLOR3DPROC glad_glSecondaryColor3d = NULL; 773 | PFNGLSECONDARYCOLOR3DVPROC glad_glSecondaryColor3dv = NULL; 774 | PFNGLSECONDARYCOLOR3FPROC glad_glSecondaryColor3f = NULL; 775 | PFNGLSECONDARYCOLOR3FVPROC glad_glSecondaryColor3fv = NULL; 776 | PFNGLSECONDARYCOLOR3IPROC glad_glSecondaryColor3i = NULL; 777 | PFNGLSECONDARYCOLOR3IVPROC glad_glSecondaryColor3iv = NULL; 778 | PFNGLSECONDARYCOLOR3SPROC glad_glSecondaryColor3s = NULL; 779 | PFNGLSECONDARYCOLOR3SVPROC glad_glSecondaryColor3sv = NULL; 780 | PFNGLSECONDARYCOLOR3UBPROC glad_glSecondaryColor3ub = NULL; 781 | PFNGLSECONDARYCOLOR3UBVPROC glad_glSecondaryColor3ubv = NULL; 782 | PFNGLSECONDARYCOLOR3UIPROC glad_glSecondaryColor3ui = NULL; 783 | PFNGLSECONDARYCOLOR3UIVPROC glad_glSecondaryColor3uiv = NULL; 784 | PFNGLSECONDARYCOLOR3USPROC glad_glSecondaryColor3us = NULL; 785 | PFNGLSECONDARYCOLOR3USVPROC glad_glSecondaryColor3usv = NULL; 786 | PFNGLSECONDARYCOLORP3UIPROC glad_glSecondaryColorP3ui = NULL; 787 | PFNGLSECONDARYCOLORP3UIVPROC glad_glSecondaryColorP3uiv = NULL; 788 | PFNGLSECONDARYCOLORPOINTERPROC glad_glSecondaryColorPointer = NULL; 789 | PFNGLSELECTBUFFERPROC glad_glSelectBuffer = NULL; 790 | PFNGLSHADEMODELPROC glad_glShadeModel = NULL; 791 | PFNGLSHADERSOURCEPROC glad_glShaderSource = NULL; 792 | PFNGLSTENCILFUNCPROC glad_glStencilFunc = NULL; 793 | PFNGLSTENCILFUNCSEPARATEPROC glad_glStencilFuncSeparate = NULL; 794 | PFNGLSTENCILMASKPROC glad_glStencilMask = NULL; 795 | PFNGLSTENCILMASKSEPARATEPROC glad_glStencilMaskSeparate = NULL; 796 | PFNGLSTENCILOPPROC glad_glStencilOp = NULL; 797 | PFNGLSTENCILOPSEPARATEPROC glad_glStencilOpSeparate = NULL; 798 | PFNGLTEXBUFFERPROC glad_glTexBuffer = NULL; 799 | PFNGLTEXCOORD1DPROC glad_glTexCoord1d = NULL; 800 | PFNGLTEXCOORD1DVPROC glad_glTexCoord1dv = NULL; 801 | PFNGLTEXCOORD1FPROC glad_glTexCoord1f = NULL; 802 | PFNGLTEXCOORD1FVPROC glad_glTexCoord1fv = NULL; 803 | PFNGLTEXCOORD1IPROC glad_glTexCoord1i = NULL; 804 | PFNGLTEXCOORD1IVPROC glad_glTexCoord1iv = NULL; 805 | PFNGLTEXCOORD1SPROC glad_glTexCoord1s = NULL; 806 | PFNGLTEXCOORD1SVPROC glad_glTexCoord1sv = NULL; 807 | PFNGLTEXCOORD2DPROC glad_glTexCoord2d = NULL; 808 | PFNGLTEXCOORD2DVPROC glad_glTexCoord2dv = NULL; 809 | PFNGLTEXCOORD2FPROC glad_glTexCoord2f = NULL; 810 | PFNGLTEXCOORD2FVPROC glad_glTexCoord2fv = NULL; 811 | PFNGLTEXCOORD2IPROC glad_glTexCoord2i = NULL; 812 | PFNGLTEXCOORD2IVPROC glad_glTexCoord2iv = NULL; 813 | PFNGLTEXCOORD2SPROC glad_glTexCoord2s = NULL; 814 | PFNGLTEXCOORD2SVPROC glad_glTexCoord2sv = NULL; 815 | PFNGLTEXCOORD3DPROC glad_glTexCoord3d = NULL; 816 | PFNGLTEXCOORD3DVPROC glad_glTexCoord3dv = NULL; 817 | PFNGLTEXCOORD3FPROC glad_glTexCoord3f = NULL; 818 | PFNGLTEXCOORD3FVPROC glad_glTexCoord3fv = NULL; 819 | PFNGLTEXCOORD3IPROC glad_glTexCoord3i = NULL; 820 | PFNGLTEXCOORD3IVPROC glad_glTexCoord3iv = NULL; 821 | PFNGLTEXCOORD3SPROC glad_glTexCoord3s = NULL; 822 | PFNGLTEXCOORD3SVPROC glad_glTexCoord3sv = NULL; 823 | PFNGLTEXCOORD4DPROC glad_glTexCoord4d = NULL; 824 | PFNGLTEXCOORD4DVPROC glad_glTexCoord4dv = NULL; 825 | PFNGLTEXCOORD4FPROC glad_glTexCoord4f = NULL; 826 | PFNGLTEXCOORD4FVPROC glad_glTexCoord4fv = NULL; 827 | PFNGLTEXCOORD4IPROC glad_glTexCoord4i = NULL; 828 | PFNGLTEXCOORD4IVPROC glad_glTexCoord4iv = NULL; 829 | PFNGLTEXCOORD4SPROC glad_glTexCoord4s = NULL; 830 | PFNGLTEXCOORD4SVPROC glad_glTexCoord4sv = NULL; 831 | PFNGLTEXCOORDP1UIPROC glad_glTexCoordP1ui = NULL; 832 | PFNGLTEXCOORDP1UIVPROC glad_glTexCoordP1uiv = NULL; 833 | PFNGLTEXCOORDP2UIPROC glad_glTexCoordP2ui = NULL; 834 | PFNGLTEXCOORDP2UIVPROC glad_glTexCoordP2uiv = NULL; 835 | PFNGLTEXCOORDP3UIPROC glad_glTexCoordP3ui = NULL; 836 | PFNGLTEXCOORDP3UIVPROC glad_glTexCoordP3uiv = NULL; 837 | PFNGLTEXCOORDP4UIPROC glad_glTexCoordP4ui = NULL; 838 | PFNGLTEXCOORDP4UIVPROC glad_glTexCoordP4uiv = NULL; 839 | PFNGLTEXCOORDPOINTERPROC glad_glTexCoordPointer = NULL; 840 | PFNGLTEXENVFPROC glad_glTexEnvf = NULL; 841 | PFNGLTEXENVFVPROC glad_glTexEnvfv = NULL; 842 | PFNGLTEXENVIPROC glad_glTexEnvi = NULL; 843 | PFNGLTEXENVIVPROC glad_glTexEnviv = NULL; 844 | PFNGLTEXGENDPROC glad_glTexGend = NULL; 845 | PFNGLTEXGENDVPROC glad_glTexGendv = NULL; 846 | PFNGLTEXGENFPROC glad_glTexGenf = NULL; 847 | PFNGLTEXGENFVPROC glad_glTexGenfv = NULL; 848 | PFNGLTEXGENIPROC glad_glTexGeni = NULL; 849 | PFNGLTEXGENIVPROC glad_glTexGeniv = NULL; 850 | PFNGLTEXIMAGE1DPROC glad_glTexImage1D = NULL; 851 | PFNGLTEXIMAGE2DPROC glad_glTexImage2D = NULL; 852 | PFNGLTEXIMAGE2DMULTISAMPLEPROC glad_glTexImage2DMultisample = NULL; 853 | PFNGLTEXIMAGE3DPROC glad_glTexImage3D = NULL; 854 | PFNGLTEXIMAGE3DMULTISAMPLEPROC glad_glTexImage3DMultisample = NULL; 855 | PFNGLTEXPARAMETERIIVPROC glad_glTexParameterIiv = NULL; 856 | PFNGLTEXPARAMETERIUIVPROC glad_glTexParameterIuiv = NULL; 857 | PFNGLTEXPARAMETERFPROC glad_glTexParameterf = NULL; 858 | PFNGLTEXPARAMETERFVPROC glad_glTexParameterfv = NULL; 859 | PFNGLTEXPARAMETERIPROC glad_glTexParameteri = NULL; 860 | PFNGLTEXPARAMETERIVPROC glad_glTexParameteriv = NULL; 861 | PFNGLTEXSUBIMAGE1DPROC glad_glTexSubImage1D = NULL; 862 | PFNGLTEXSUBIMAGE2DPROC glad_glTexSubImage2D = NULL; 863 | PFNGLTEXSUBIMAGE3DPROC glad_glTexSubImage3D = NULL; 864 | PFNGLTRANSFORMFEEDBACKVARYINGSPROC glad_glTransformFeedbackVaryings = NULL; 865 | PFNGLTRANSLATEDPROC glad_glTranslated = NULL; 866 | PFNGLTRANSLATEFPROC glad_glTranslatef = NULL; 867 | PFNGLUNIFORM1DPROC glad_glUniform1d = NULL; 868 | PFNGLUNIFORM1DVPROC glad_glUniform1dv = NULL; 869 | PFNGLUNIFORM1FPROC glad_glUniform1f = NULL; 870 | PFNGLUNIFORM1FVPROC glad_glUniform1fv = NULL; 871 | PFNGLUNIFORM1IPROC glad_glUniform1i = NULL; 872 | PFNGLUNIFORM1IVPROC glad_glUniform1iv = NULL; 873 | PFNGLUNIFORM1UIPROC glad_glUniform1ui = NULL; 874 | PFNGLUNIFORM1UIVPROC glad_glUniform1uiv = NULL; 875 | PFNGLUNIFORM2DPROC glad_glUniform2d = NULL; 876 | PFNGLUNIFORM2DVPROC glad_glUniform2dv = NULL; 877 | PFNGLUNIFORM2FPROC glad_glUniform2f = NULL; 878 | PFNGLUNIFORM2FVPROC glad_glUniform2fv = NULL; 879 | PFNGLUNIFORM2IPROC glad_glUniform2i = NULL; 880 | PFNGLUNIFORM2IVPROC glad_glUniform2iv = NULL; 881 | PFNGLUNIFORM2UIPROC glad_glUniform2ui = NULL; 882 | PFNGLUNIFORM2UIVPROC glad_glUniform2uiv = NULL; 883 | PFNGLUNIFORM3DPROC glad_glUniform3d = NULL; 884 | PFNGLUNIFORM3DVPROC glad_glUniform3dv = NULL; 885 | PFNGLUNIFORM3FPROC glad_glUniform3f = NULL; 886 | PFNGLUNIFORM3FVPROC glad_glUniform3fv = NULL; 887 | PFNGLUNIFORM3IPROC glad_glUniform3i = NULL; 888 | PFNGLUNIFORM3IVPROC glad_glUniform3iv = NULL; 889 | PFNGLUNIFORM3UIPROC glad_glUniform3ui = NULL; 890 | PFNGLUNIFORM3UIVPROC glad_glUniform3uiv = NULL; 891 | PFNGLUNIFORM4DPROC glad_glUniform4d = NULL; 892 | PFNGLUNIFORM4DVPROC glad_glUniform4dv = NULL; 893 | PFNGLUNIFORM4FPROC glad_glUniform4f = NULL; 894 | PFNGLUNIFORM4FVPROC glad_glUniform4fv = NULL; 895 | PFNGLUNIFORM4IPROC glad_glUniform4i = NULL; 896 | PFNGLUNIFORM4IVPROC glad_glUniform4iv = NULL; 897 | PFNGLUNIFORM4UIPROC glad_glUniform4ui = NULL; 898 | PFNGLUNIFORM4UIVPROC glad_glUniform4uiv = NULL; 899 | PFNGLUNIFORMBLOCKBINDINGPROC glad_glUniformBlockBinding = NULL; 900 | PFNGLUNIFORMMATRIX2DVPROC glad_glUniformMatrix2dv = NULL; 901 | PFNGLUNIFORMMATRIX2FVPROC glad_glUniformMatrix2fv = NULL; 902 | PFNGLUNIFORMMATRIX2X3DVPROC glad_glUniformMatrix2x3dv = NULL; 903 | PFNGLUNIFORMMATRIX2X3FVPROC glad_glUniformMatrix2x3fv = NULL; 904 | PFNGLUNIFORMMATRIX2X4DVPROC glad_glUniformMatrix2x4dv = NULL; 905 | PFNGLUNIFORMMATRIX2X4FVPROC glad_glUniformMatrix2x4fv = NULL; 906 | PFNGLUNIFORMMATRIX3DVPROC glad_glUniformMatrix3dv = NULL; 907 | PFNGLUNIFORMMATRIX3FVPROC glad_glUniformMatrix3fv = NULL; 908 | PFNGLUNIFORMMATRIX3X2DVPROC glad_glUniformMatrix3x2dv = NULL; 909 | PFNGLUNIFORMMATRIX3X2FVPROC glad_glUniformMatrix3x2fv = NULL; 910 | PFNGLUNIFORMMATRIX3X4DVPROC glad_glUniformMatrix3x4dv = NULL; 911 | PFNGLUNIFORMMATRIX3X4FVPROC glad_glUniformMatrix3x4fv = NULL; 912 | PFNGLUNIFORMMATRIX4DVPROC glad_glUniformMatrix4dv = NULL; 913 | PFNGLUNIFORMMATRIX4FVPROC glad_glUniformMatrix4fv = NULL; 914 | PFNGLUNIFORMMATRIX4X2DVPROC glad_glUniformMatrix4x2dv = NULL; 915 | PFNGLUNIFORMMATRIX4X2FVPROC glad_glUniformMatrix4x2fv = NULL; 916 | PFNGLUNIFORMMATRIX4X3DVPROC glad_glUniformMatrix4x3dv = NULL; 917 | PFNGLUNIFORMMATRIX4X3FVPROC glad_glUniformMatrix4x3fv = NULL; 918 | PFNGLUNIFORMSUBROUTINESUIVPROC glad_glUniformSubroutinesuiv = NULL; 919 | PFNGLUNMAPBUFFERPROC glad_glUnmapBuffer = NULL; 920 | PFNGLUSEPROGRAMPROC glad_glUseProgram = NULL; 921 | PFNGLVALIDATEPROGRAMPROC glad_glValidateProgram = NULL; 922 | PFNGLVERTEX2DPROC glad_glVertex2d = NULL; 923 | PFNGLVERTEX2DVPROC glad_glVertex2dv = NULL; 924 | PFNGLVERTEX2FPROC glad_glVertex2f = NULL; 925 | PFNGLVERTEX2FVPROC glad_glVertex2fv = NULL; 926 | PFNGLVERTEX2IPROC glad_glVertex2i = NULL; 927 | PFNGLVERTEX2IVPROC glad_glVertex2iv = NULL; 928 | PFNGLVERTEX2SPROC glad_glVertex2s = NULL; 929 | PFNGLVERTEX2SVPROC glad_glVertex2sv = NULL; 930 | PFNGLVERTEX3DPROC glad_glVertex3d = NULL; 931 | PFNGLVERTEX3DVPROC glad_glVertex3dv = NULL; 932 | PFNGLVERTEX3FPROC glad_glVertex3f = NULL; 933 | PFNGLVERTEX3FVPROC glad_glVertex3fv = NULL; 934 | PFNGLVERTEX3IPROC glad_glVertex3i = NULL; 935 | PFNGLVERTEX3IVPROC glad_glVertex3iv = NULL; 936 | PFNGLVERTEX3SPROC glad_glVertex3s = NULL; 937 | PFNGLVERTEX3SVPROC glad_glVertex3sv = NULL; 938 | PFNGLVERTEX4DPROC glad_glVertex4d = NULL; 939 | PFNGLVERTEX4DVPROC glad_glVertex4dv = NULL; 940 | PFNGLVERTEX4FPROC glad_glVertex4f = NULL; 941 | PFNGLVERTEX4FVPROC glad_glVertex4fv = NULL; 942 | PFNGLVERTEX4IPROC glad_glVertex4i = NULL; 943 | PFNGLVERTEX4IVPROC glad_glVertex4iv = NULL; 944 | PFNGLVERTEX4SPROC glad_glVertex4s = NULL; 945 | PFNGLVERTEX4SVPROC glad_glVertex4sv = NULL; 946 | PFNGLVERTEXATTRIB1DPROC glad_glVertexAttrib1d = NULL; 947 | PFNGLVERTEXATTRIB1DVPROC glad_glVertexAttrib1dv = NULL; 948 | PFNGLVERTEXATTRIB1FPROC glad_glVertexAttrib1f = NULL; 949 | PFNGLVERTEXATTRIB1FVPROC glad_glVertexAttrib1fv = NULL; 950 | PFNGLVERTEXATTRIB1SPROC glad_glVertexAttrib1s = NULL; 951 | PFNGLVERTEXATTRIB1SVPROC glad_glVertexAttrib1sv = NULL; 952 | PFNGLVERTEXATTRIB2DPROC glad_glVertexAttrib2d = NULL; 953 | PFNGLVERTEXATTRIB2DVPROC glad_glVertexAttrib2dv = NULL; 954 | PFNGLVERTEXATTRIB2FPROC glad_glVertexAttrib2f = NULL; 955 | PFNGLVERTEXATTRIB2FVPROC glad_glVertexAttrib2fv = NULL; 956 | PFNGLVERTEXATTRIB2SPROC glad_glVertexAttrib2s = NULL; 957 | PFNGLVERTEXATTRIB2SVPROC glad_glVertexAttrib2sv = NULL; 958 | PFNGLVERTEXATTRIB3DPROC glad_glVertexAttrib3d = NULL; 959 | PFNGLVERTEXATTRIB3DVPROC glad_glVertexAttrib3dv = NULL; 960 | PFNGLVERTEXATTRIB3FPROC glad_glVertexAttrib3f = NULL; 961 | PFNGLVERTEXATTRIB3FVPROC glad_glVertexAttrib3fv = NULL; 962 | PFNGLVERTEXATTRIB3SPROC glad_glVertexAttrib3s = NULL; 963 | PFNGLVERTEXATTRIB3SVPROC glad_glVertexAttrib3sv = NULL; 964 | PFNGLVERTEXATTRIB4NBVPROC glad_glVertexAttrib4Nbv = NULL; 965 | PFNGLVERTEXATTRIB4NIVPROC glad_glVertexAttrib4Niv = NULL; 966 | PFNGLVERTEXATTRIB4NSVPROC glad_glVertexAttrib4Nsv = NULL; 967 | PFNGLVERTEXATTRIB4NUBPROC glad_glVertexAttrib4Nub = NULL; 968 | PFNGLVERTEXATTRIB4NUBVPROC glad_glVertexAttrib4Nubv = NULL; 969 | PFNGLVERTEXATTRIB4NUIVPROC glad_glVertexAttrib4Nuiv = NULL; 970 | PFNGLVERTEXATTRIB4NUSVPROC glad_glVertexAttrib4Nusv = NULL; 971 | PFNGLVERTEXATTRIB4BVPROC glad_glVertexAttrib4bv = NULL; 972 | PFNGLVERTEXATTRIB4DPROC glad_glVertexAttrib4d = NULL; 973 | PFNGLVERTEXATTRIB4DVPROC glad_glVertexAttrib4dv = NULL; 974 | PFNGLVERTEXATTRIB4FPROC glad_glVertexAttrib4f = NULL; 975 | PFNGLVERTEXATTRIB4FVPROC glad_glVertexAttrib4fv = NULL; 976 | PFNGLVERTEXATTRIB4IVPROC glad_glVertexAttrib4iv = NULL; 977 | PFNGLVERTEXATTRIB4SPROC glad_glVertexAttrib4s = NULL; 978 | PFNGLVERTEXATTRIB4SVPROC glad_glVertexAttrib4sv = NULL; 979 | PFNGLVERTEXATTRIB4UBVPROC glad_glVertexAttrib4ubv = NULL; 980 | PFNGLVERTEXATTRIB4UIVPROC glad_glVertexAttrib4uiv = NULL; 981 | PFNGLVERTEXATTRIB4USVPROC glad_glVertexAttrib4usv = NULL; 982 | PFNGLVERTEXATTRIBDIVISORPROC glad_glVertexAttribDivisor = NULL; 983 | PFNGLVERTEXATTRIBI1IPROC glad_glVertexAttribI1i = NULL; 984 | PFNGLVERTEXATTRIBI1IVPROC glad_glVertexAttribI1iv = NULL; 985 | PFNGLVERTEXATTRIBI1UIPROC glad_glVertexAttribI1ui = NULL; 986 | PFNGLVERTEXATTRIBI1UIVPROC glad_glVertexAttribI1uiv = NULL; 987 | PFNGLVERTEXATTRIBI2IPROC glad_glVertexAttribI2i = NULL; 988 | PFNGLVERTEXATTRIBI2IVPROC glad_glVertexAttribI2iv = NULL; 989 | PFNGLVERTEXATTRIBI2UIPROC glad_glVertexAttribI2ui = NULL; 990 | PFNGLVERTEXATTRIBI2UIVPROC glad_glVertexAttribI2uiv = NULL; 991 | PFNGLVERTEXATTRIBI3IPROC glad_glVertexAttribI3i = NULL; 992 | PFNGLVERTEXATTRIBI3IVPROC glad_glVertexAttribI3iv = NULL; 993 | PFNGLVERTEXATTRIBI3UIPROC glad_glVertexAttribI3ui = NULL; 994 | PFNGLVERTEXATTRIBI3UIVPROC glad_glVertexAttribI3uiv = NULL; 995 | PFNGLVERTEXATTRIBI4BVPROC glad_glVertexAttribI4bv = NULL; 996 | PFNGLVERTEXATTRIBI4IPROC glad_glVertexAttribI4i = NULL; 997 | PFNGLVERTEXATTRIBI4IVPROC glad_glVertexAttribI4iv = NULL; 998 | PFNGLVERTEXATTRIBI4SVPROC glad_glVertexAttribI4sv = NULL; 999 | PFNGLVERTEXATTRIBI4UBVPROC glad_glVertexAttribI4ubv = NULL; 1000 | PFNGLVERTEXATTRIBI4UIPROC glad_glVertexAttribI4ui = NULL; 1001 | PFNGLVERTEXATTRIBI4UIVPROC glad_glVertexAttribI4uiv = NULL; 1002 | PFNGLVERTEXATTRIBI4USVPROC glad_glVertexAttribI4usv = NULL; 1003 | PFNGLVERTEXATTRIBIPOINTERPROC glad_glVertexAttribIPointer = NULL; 1004 | PFNGLVERTEXATTRIBP1UIPROC glad_glVertexAttribP1ui = NULL; 1005 | PFNGLVERTEXATTRIBP1UIVPROC glad_glVertexAttribP1uiv = NULL; 1006 | PFNGLVERTEXATTRIBP2UIPROC glad_glVertexAttribP2ui = NULL; 1007 | PFNGLVERTEXATTRIBP2UIVPROC glad_glVertexAttribP2uiv = NULL; 1008 | PFNGLVERTEXATTRIBP3UIPROC glad_glVertexAttribP3ui = NULL; 1009 | PFNGLVERTEXATTRIBP3UIVPROC glad_glVertexAttribP3uiv = NULL; 1010 | PFNGLVERTEXATTRIBP4UIPROC glad_glVertexAttribP4ui = NULL; 1011 | PFNGLVERTEXATTRIBP4UIVPROC glad_glVertexAttribP4uiv = NULL; 1012 | PFNGLVERTEXATTRIBPOINTERPROC glad_glVertexAttribPointer = NULL; 1013 | PFNGLVERTEXP2UIPROC glad_glVertexP2ui = NULL; 1014 | PFNGLVERTEXP2UIVPROC glad_glVertexP2uiv = NULL; 1015 | PFNGLVERTEXP3UIPROC glad_glVertexP3ui = NULL; 1016 | PFNGLVERTEXP3UIVPROC glad_glVertexP3uiv = NULL; 1017 | PFNGLVERTEXP4UIPROC glad_glVertexP4ui = NULL; 1018 | PFNGLVERTEXP4UIVPROC glad_glVertexP4uiv = NULL; 1019 | PFNGLVERTEXPOINTERPROC glad_glVertexPointer = NULL; 1020 | PFNGLVIEWPORTPROC glad_glViewport = NULL; 1021 | PFNGLWAITSYNCPROC glad_glWaitSync = NULL; 1022 | PFNGLWINDOWPOS2DPROC glad_glWindowPos2d = NULL; 1023 | PFNGLWINDOWPOS2DVPROC glad_glWindowPos2dv = NULL; 1024 | PFNGLWINDOWPOS2FPROC glad_glWindowPos2f = NULL; 1025 | PFNGLWINDOWPOS2FVPROC glad_glWindowPos2fv = NULL; 1026 | PFNGLWINDOWPOS2IPROC glad_glWindowPos2i = NULL; 1027 | PFNGLWINDOWPOS2IVPROC glad_glWindowPos2iv = NULL; 1028 | PFNGLWINDOWPOS2SPROC glad_glWindowPos2s = NULL; 1029 | PFNGLWINDOWPOS2SVPROC glad_glWindowPos2sv = NULL; 1030 | PFNGLWINDOWPOS3DPROC glad_glWindowPos3d = NULL; 1031 | PFNGLWINDOWPOS3DVPROC glad_glWindowPos3dv = NULL; 1032 | PFNGLWINDOWPOS3FPROC glad_glWindowPos3f = NULL; 1033 | PFNGLWINDOWPOS3FVPROC glad_glWindowPos3fv = NULL; 1034 | PFNGLWINDOWPOS3IPROC glad_glWindowPos3i = NULL; 1035 | PFNGLWINDOWPOS3IVPROC glad_glWindowPos3iv = NULL; 1036 | PFNGLWINDOWPOS3SPROC glad_glWindowPos3s = NULL; 1037 | PFNGLWINDOWPOS3SVPROC glad_glWindowPos3sv = NULL; 1038 | static void load_GL_VERSION_1_0(GLADloadproc load) { 1039 | if(!GLAD_GL_VERSION_1_0) return; 1040 | glad_glCullFace = (PFNGLCULLFACEPROC)load("glCullFace"); 1041 | glad_glFrontFace = (PFNGLFRONTFACEPROC)load("glFrontFace"); 1042 | glad_glHint = (PFNGLHINTPROC)load("glHint"); 1043 | glad_glLineWidth = (PFNGLLINEWIDTHPROC)load("glLineWidth"); 1044 | glad_glPointSize = (PFNGLPOINTSIZEPROC)load("glPointSize"); 1045 | glad_glPolygonMode = (PFNGLPOLYGONMODEPROC)load("glPolygonMode"); 1046 | glad_glScissor = (PFNGLSCISSORPROC)load("glScissor"); 1047 | glad_glTexParameterf = (PFNGLTEXPARAMETERFPROC)load("glTexParameterf"); 1048 | glad_glTexParameterfv = (PFNGLTEXPARAMETERFVPROC)load("glTexParameterfv"); 1049 | glad_glTexParameteri = (PFNGLTEXPARAMETERIPROC)load("glTexParameteri"); 1050 | glad_glTexParameteriv = (PFNGLTEXPARAMETERIVPROC)load("glTexParameteriv"); 1051 | glad_glTexImage1D = (PFNGLTEXIMAGE1DPROC)load("glTexImage1D"); 1052 | glad_glTexImage2D = (PFNGLTEXIMAGE2DPROC)load("glTexImage2D"); 1053 | glad_glDrawBuffer = (PFNGLDRAWBUFFERPROC)load("glDrawBuffer"); 1054 | glad_glClear = (PFNGLCLEARPROC)load("glClear"); 1055 | glad_glClearColor = (PFNGLCLEARCOLORPROC)load("glClearColor"); 1056 | glad_glClearStencil = (PFNGLCLEARSTENCILPROC)load("glClearStencil"); 1057 | glad_glClearDepth = (PFNGLCLEARDEPTHPROC)load("glClearDepth"); 1058 | glad_glStencilMask = (PFNGLSTENCILMASKPROC)load("glStencilMask"); 1059 | glad_glColorMask = (PFNGLCOLORMASKPROC)load("glColorMask"); 1060 | glad_glDepthMask = (PFNGLDEPTHMASKPROC)load("glDepthMask"); 1061 | glad_glDisable = (PFNGLDISABLEPROC)load("glDisable"); 1062 | glad_glEnable = (PFNGLENABLEPROC)load("glEnable"); 1063 | glad_glFinish = (PFNGLFINISHPROC)load("glFinish"); 1064 | glad_glFlush = (PFNGLFLUSHPROC)load("glFlush"); 1065 | glad_glBlendFunc = (PFNGLBLENDFUNCPROC)load("glBlendFunc"); 1066 | glad_glLogicOp = (PFNGLLOGICOPPROC)load("glLogicOp"); 1067 | glad_glStencilFunc = (PFNGLSTENCILFUNCPROC)load("glStencilFunc"); 1068 | glad_glStencilOp = (PFNGLSTENCILOPPROC)load("glStencilOp"); 1069 | glad_glDepthFunc = (PFNGLDEPTHFUNCPROC)load("glDepthFunc"); 1070 | glad_glPixelStoref = (PFNGLPIXELSTOREFPROC)load("glPixelStoref"); 1071 | glad_glPixelStorei = (PFNGLPIXELSTOREIPROC)load("glPixelStorei"); 1072 | glad_glReadBuffer = (PFNGLREADBUFFERPROC)load("glReadBuffer"); 1073 | glad_glReadPixels = (PFNGLREADPIXELSPROC)load("glReadPixels"); 1074 | glad_glGetBooleanv = (PFNGLGETBOOLEANVPROC)load("glGetBooleanv"); 1075 | glad_glGetDoublev = (PFNGLGETDOUBLEVPROC)load("glGetDoublev"); 1076 | glad_glGetError = (PFNGLGETERRORPROC)load("glGetError"); 1077 | glad_glGetFloatv = (PFNGLGETFLOATVPROC)load("glGetFloatv"); 1078 | glad_glGetIntegerv = (PFNGLGETINTEGERVPROC)load("glGetIntegerv"); 1079 | glad_glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); 1080 | glad_glGetTexImage = (PFNGLGETTEXIMAGEPROC)load("glGetTexImage"); 1081 | glad_glGetTexParameterfv = (PFNGLGETTEXPARAMETERFVPROC)load("glGetTexParameterfv"); 1082 | glad_glGetTexParameteriv = (PFNGLGETTEXPARAMETERIVPROC)load("glGetTexParameteriv"); 1083 | glad_glGetTexLevelParameterfv = (PFNGLGETTEXLEVELPARAMETERFVPROC)load("glGetTexLevelParameterfv"); 1084 | glad_glGetTexLevelParameteriv = (PFNGLGETTEXLEVELPARAMETERIVPROC)load("glGetTexLevelParameteriv"); 1085 | glad_glIsEnabled = (PFNGLISENABLEDPROC)load("glIsEnabled"); 1086 | glad_glDepthRange = (PFNGLDEPTHRANGEPROC)load("glDepthRange"); 1087 | glad_glViewport = (PFNGLVIEWPORTPROC)load("glViewport"); 1088 | glad_glNewList = (PFNGLNEWLISTPROC)load("glNewList"); 1089 | glad_glEndList = (PFNGLENDLISTPROC)load("glEndList"); 1090 | glad_glCallList = (PFNGLCALLLISTPROC)load("glCallList"); 1091 | glad_glCallLists = (PFNGLCALLLISTSPROC)load("glCallLists"); 1092 | glad_glDeleteLists = (PFNGLDELETELISTSPROC)load("glDeleteLists"); 1093 | glad_glGenLists = (PFNGLGENLISTSPROC)load("glGenLists"); 1094 | glad_glListBase = (PFNGLLISTBASEPROC)load("glListBase"); 1095 | glad_glBegin = (PFNGLBEGINPROC)load("glBegin"); 1096 | glad_glBitmap = (PFNGLBITMAPPROC)load("glBitmap"); 1097 | glad_glColor3b = (PFNGLCOLOR3BPROC)load("glColor3b"); 1098 | glad_glColor3bv = (PFNGLCOLOR3BVPROC)load("glColor3bv"); 1099 | glad_glColor3d = (PFNGLCOLOR3DPROC)load("glColor3d"); 1100 | glad_glColor3dv = (PFNGLCOLOR3DVPROC)load("glColor3dv"); 1101 | glad_glColor3f = (PFNGLCOLOR3FPROC)load("glColor3f"); 1102 | glad_glColor3fv = (PFNGLCOLOR3FVPROC)load("glColor3fv"); 1103 | glad_glColor3i = (PFNGLCOLOR3IPROC)load("glColor3i"); 1104 | glad_glColor3iv = (PFNGLCOLOR3IVPROC)load("glColor3iv"); 1105 | glad_glColor3s = (PFNGLCOLOR3SPROC)load("glColor3s"); 1106 | glad_glColor3sv = (PFNGLCOLOR3SVPROC)load("glColor3sv"); 1107 | glad_glColor3ub = (PFNGLCOLOR3UBPROC)load("glColor3ub"); 1108 | glad_glColor3ubv = (PFNGLCOLOR3UBVPROC)load("glColor3ubv"); 1109 | glad_glColor3ui = (PFNGLCOLOR3UIPROC)load("glColor3ui"); 1110 | glad_glColor3uiv = (PFNGLCOLOR3UIVPROC)load("glColor3uiv"); 1111 | glad_glColor3us = (PFNGLCOLOR3USPROC)load("glColor3us"); 1112 | glad_glColor3usv = (PFNGLCOLOR3USVPROC)load("glColor3usv"); 1113 | glad_glColor4b = (PFNGLCOLOR4BPROC)load("glColor4b"); 1114 | glad_glColor4bv = (PFNGLCOLOR4BVPROC)load("glColor4bv"); 1115 | glad_glColor4d = (PFNGLCOLOR4DPROC)load("glColor4d"); 1116 | glad_glColor4dv = (PFNGLCOLOR4DVPROC)load("glColor4dv"); 1117 | glad_glColor4f = (PFNGLCOLOR4FPROC)load("glColor4f"); 1118 | glad_glColor4fv = (PFNGLCOLOR4FVPROC)load("glColor4fv"); 1119 | glad_glColor4i = (PFNGLCOLOR4IPROC)load("glColor4i"); 1120 | glad_glColor4iv = (PFNGLCOLOR4IVPROC)load("glColor4iv"); 1121 | glad_glColor4s = (PFNGLCOLOR4SPROC)load("glColor4s"); 1122 | glad_glColor4sv = (PFNGLCOLOR4SVPROC)load("glColor4sv"); 1123 | glad_glColor4ub = (PFNGLCOLOR4UBPROC)load("glColor4ub"); 1124 | glad_glColor4ubv = (PFNGLCOLOR4UBVPROC)load("glColor4ubv"); 1125 | glad_glColor4ui = (PFNGLCOLOR4UIPROC)load("glColor4ui"); 1126 | glad_glColor4uiv = (PFNGLCOLOR4UIVPROC)load("glColor4uiv"); 1127 | glad_glColor4us = (PFNGLCOLOR4USPROC)load("glColor4us"); 1128 | glad_glColor4usv = (PFNGLCOLOR4USVPROC)load("glColor4usv"); 1129 | glad_glEdgeFlag = (PFNGLEDGEFLAGPROC)load("glEdgeFlag"); 1130 | glad_glEdgeFlagv = (PFNGLEDGEFLAGVPROC)load("glEdgeFlagv"); 1131 | glad_glEnd = (PFNGLENDPROC)load("glEnd"); 1132 | glad_glIndexd = (PFNGLINDEXDPROC)load("glIndexd"); 1133 | glad_glIndexdv = (PFNGLINDEXDVPROC)load("glIndexdv"); 1134 | glad_glIndexf = (PFNGLINDEXFPROC)load("glIndexf"); 1135 | glad_glIndexfv = (PFNGLINDEXFVPROC)load("glIndexfv"); 1136 | glad_glIndexi = (PFNGLINDEXIPROC)load("glIndexi"); 1137 | glad_glIndexiv = (PFNGLINDEXIVPROC)load("glIndexiv"); 1138 | glad_glIndexs = (PFNGLINDEXSPROC)load("glIndexs"); 1139 | glad_glIndexsv = (PFNGLINDEXSVPROC)load("glIndexsv"); 1140 | glad_glNormal3b = (PFNGLNORMAL3BPROC)load("glNormal3b"); 1141 | glad_glNormal3bv = (PFNGLNORMAL3BVPROC)load("glNormal3bv"); 1142 | glad_glNormal3d = (PFNGLNORMAL3DPROC)load("glNormal3d"); 1143 | glad_glNormal3dv = (PFNGLNORMAL3DVPROC)load("glNormal3dv"); 1144 | glad_glNormal3f = (PFNGLNORMAL3FPROC)load("glNormal3f"); 1145 | glad_glNormal3fv = (PFNGLNORMAL3FVPROC)load("glNormal3fv"); 1146 | glad_glNormal3i = (PFNGLNORMAL3IPROC)load("glNormal3i"); 1147 | glad_glNormal3iv = (PFNGLNORMAL3IVPROC)load("glNormal3iv"); 1148 | glad_glNormal3s = (PFNGLNORMAL3SPROC)load("glNormal3s"); 1149 | glad_glNormal3sv = (PFNGLNORMAL3SVPROC)load("glNormal3sv"); 1150 | glad_glRasterPos2d = (PFNGLRASTERPOS2DPROC)load("glRasterPos2d"); 1151 | glad_glRasterPos2dv = (PFNGLRASTERPOS2DVPROC)load("glRasterPos2dv"); 1152 | glad_glRasterPos2f = (PFNGLRASTERPOS2FPROC)load("glRasterPos2f"); 1153 | glad_glRasterPos2fv = (PFNGLRASTERPOS2FVPROC)load("glRasterPos2fv"); 1154 | glad_glRasterPos2i = (PFNGLRASTERPOS2IPROC)load("glRasterPos2i"); 1155 | glad_glRasterPos2iv = (PFNGLRASTERPOS2IVPROC)load("glRasterPos2iv"); 1156 | glad_glRasterPos2s = (PFNGLRASTERPOS2SPROC)load("glRasterPos2s"); 1157 | glad_glRasterPos2sv = (PFNGLRASTERPOS2SVPROC)load("glRasterPos2sv"); 1158 | glad_glRasterPos3d = (PFNGLRASTERPOS3DPROC)load("glRasterPos3d"); 1159 | glad_glRasterPos3dv = (PFNGLRASTERPOS3DVPROC)load("glRasterPos3dv"); 1160 | glad_glRasterPos3f = (PFNGLRASTERPOS3FPROC)load("glRasterPos3f"); 1161 | glad_glRasterPos3fv = (PFNGLRASTERPOS3FVPROC)load("glRasterPos3fv"); 1162 | glad_glRasterPos3i = (PFNGLRASTERPOS3IPROC)load("glRasterPos3i"); 1163 | glad_glRasterPos3iv = (PFNGLRASTERPOS3IVPROC)load("glRasterPos3iv"); 1164 | glad_glRasterPos3s = (PFNGLRASTERPOS3SPROC)load("glRasterPos3s"); 1165 | glad_glRasterPos3sv = (PFNGLRASTERPOS3SVPROC)load("glRasterPos3sv"); 1166 | glad_glRasterPos4d = (PFNGLRASTERPOS4DPROC)load("glRasterPos4d"); 1167 | glad_glRasterPos4dv = (PFNGLRASTERPOS4DVPROC)load("glRasterPos4dv"); 1168 | glad_glRasterPos4f = (PFNGLRASTERPOS4FPROC)load("glRasterPos4f"); 1169 | glad_glRasterPos4fv = (PFNGLRASTERPOS4FVPROC)load("glRasterPos4fv"); 1170 | glad_glRasterPos4i = (PFNGLRASTERPOS4IPROC)load("glRasterPos4i"); 1171 | glad_glRasterPos4iv = (PFNGLRASTERPOS4IVPROC)load("glRasterPos4iv"); 1172 | glad_glRasterPos4s = (PFNGLRASTERPOS4SPROC)load("glRasterPos4s"); 1173 | glad_glRasterPos4sv = (PFNGLRASTERPOS4SVPROC)load("glRasterPos4sv"); 1174 | glad_glRectd = (PFNGLRECTDPROC)load("glRectd"); 1175 | glad_glRectdv = (PFNGLRECTDVPROC)load("glRectdv"); 1176 | glad_glRectf = (PFNGLRECTFPROC)load("glRectf"); 1177 | glad_glRectfv = (PFNGLRECTFVPROC)load("glRectfv"); 1178 | glad_glRecti = (PFNGLRECTIPROC)load("glRecti"); 1179 | glad_glRectiv = (PFNGLRECTIVPROC)load("glRectiv"); 1180 | glad_glRects = (PFNGLRECTSPROC)load("glRects"); 1181 | glad_glRectsv = (PFNGLRECTSVPROC)load("glRectsv"); 1182 | glad_glTexCoord1d = (PFNGLTEXCOORD1DPROC)load("glTexCoord1d"); 1183 | glad_glTexCoord1dv = (PFNGLTEXCOORD1DVPROC)load("glTexCoord1dv"); 1184 | glad_glTexCoord1f = (PFNGLTEXCOORD1FPROC)load("glTexCoord1f"); 1185 | glad_glTexCoord1fv = (PFNGLTEXCOORD1FVPROC)load("glTexCoord1fv"); 1186 | glad_glTexCoord1i = (PFNGLTEXCOORD1IPROC)load("glTexCoord1i"); 1187 | glad_glTexCoord1iv = (PFNGLTEXCOORD1IVPROC)load("glTexCoord1iv"); 1188 | glad_glTexCoord1s = (PFNGLTEXCOORD1SPROC)load("glTexCoord1s"); 1189 | glad_glTexCoord1sv = (PFNGLTEXCOORD1SVPROC)load("glTexCoord1sv"); 1190 | glad_glTexCoord2d = (PFNGLTEXCOORD2DPROC)load("glTexCoord2d"); 1191 | glad_glTexCoord2dv = (PFNGLTEXCOORD2DVPROC)load("glTexCoord2dv"); 1192 | glad_glTexCoord2f = (PFNGLTEXCOORD2FPROC)load("glTexCoord2f"); 1193 | glad_glTexCoord2fv = (PFNGLTEXCOORD2FVPROC)load("glTexCoord2fv"); 1194 | glad_glTexCoord2i = (PFNGLTEXCOORD2IPROC)load("glTexCoord2i"); 1195 | glad_glTexCoord2iv = (PFNGLTEXCOORD2IVPROC)load("glTexCoord2iv"); 1196 | glad_glTexCoord2s = (PFNGLTEXCOORD2SPROC)load("glTexCoord2s"); 1197 | glad_glTexCoord2sv = (PFNGLTEXCOORD2SVPROC)load("glTexCoord2sv"); 1198 | glad_glTexCoord3d = (PFNGLTEXCOORD3DPROC)load("glTexCoord3d"); 1199 | glad_glTexCoord3dv = (PFNGLTEXCOORD3DVPROC)load("glTexCoord3dv"); 1200 | glad_glTexCoord3f = (PFNGLTEXCOORD3FPROC)load("glTexCoord3f"); 1201 | glad_glTexCoord3fv = (PFNGLTEXCOORD3FVPROC)load("glTexCoord3fv"); 1202 | glad_glTexCoord3i = (PFNGLTEXCOORD3IPROC)load("glTexCoord3i"); 1203 | glad_glTexCoord3iv = (PFNGLTEXCOORD3IVPROC)load("glTexCoord3iv"); 1204 | glad_glTexCoord3s = (PFNGLTEXCOORD3SPROC)load("glTexCoord3s"); 1205 | glad_glTexCoord3sv = (PFNGLTEXCOORD3SVPROC)load("glTexCoord3sv"); 1206 | glad_glTexCoord4d = (PFNGLTEXCOORD4DPROC)load("glTexCoord4d"); 1207 | glad_glTexCoord4dv = (PFNGLTEXCOORD4DVPROC)load("glTexCoord4dv"); 1208 | glad_glTexCoord4f = (PFNGLTEXCOORD4FPROC)load("glTexCoord4f"); 1209 | glad_glTexCoord4fv = (PFNGLTEXCOORD4FVPROC)load("glTexCoord4fv"); 1210 | glad_glTexCoord4i = (PFNGLTEXCOORD4IPROC)load("glTexCoord4i"); 1211 | glad_glTexCoord4iv = (PFNGLTEXCOORD4IVPROC)load("glTexCoord4iv"); 1212 | glad_glTexCoord4s = (PFNGLTEXCOORD4SPROC)load("glTexCoord4s"); 1213 | glad_glTexCoord4sv = (PFNGLTEXCOORD4SVPROC)load("glTexCoord4sv"); 1214 | glad_glVertex2d = (PFNGLVERTEX2DPROC)load("glVertex2d"); 1215 | glad_glVertex2dv = (PFNGLVERTEX2DVPROC)load("glVertex2dv"); 1216 | glad_glVertex2f = (PFNGLVERTEX2FPROC)load("glVertex2f"); 1217 | glad_glVertex2fv = (PFNGLVERTEX2FVPROC)load("glVertex2fv"); 1218 | glad_glVertex2i = (PFNGLVERTEX2IPROC)load("glVertex2i"); 1219 | glad_glVertex2iv = (PFNGLVERTEX2IVPROC)load("glVertex2iv"); 1220 | glad_glVertex2s = (PFNGLVERTEX2SPROC)load("glVertex2s"); 1221 | glad_glVertex2sv = (PFNGLVERTEX2SVPROC)load("glVertex2sv"); 1222 | glad_glVertex3d = (PFNGLVERTEX3DPROC)load("glVertex3d"); 1223 | glad_glVertex3dv = (PFNGLVERTEX3DVPROC)load("glVertex3dv"); 1224 | glad_glVertex3f = (PFNGLVERTEX3FPROC)load("glVertex3f"); 1225 | glad_glVertex3fv = (PFNGLVERTEX3FVPROC)load("glVertex3fv"); 1226 | glad_glVertex3i = (PFNGLVERTEX3IPROC)load("glVertex3i"); 1227 | glad_glVertex3iv = (PFNGLVERTEX3IVPROC)load("glVertex3iv"); 1228 | glad_glVertex3s = (PFNGLVERTEX3SPROC)load("glVertex3s"); 1229 | glad_glVertex3sv = (PFNGLVERTEX3SVPROC)load("glVertex3sv"); 1230 | glad_glVertex4d = (PFNGLVERTEX4DPROC)load("glVertex4d"); 1231 | glad_glVertex4dv = (PFNGLVERTEX4DVPROC)load("glVertex4dv"); 1232 | glad_glVertex4f = (PFNGLVERTEX4FPROC)load("glVertex4f"); 1233 | glad_glVertex4fv = (PFNGLVERTEX4FVPROC)load("glVertex4fv"); 1234 | glad_glVertex4i = (PFNGLVERTEX4IPROC)load("glVertex4i"); 1235 | glad_glVertex4iv = (PFNGLVERTEX4IVPROC)load("glVertex4iv"); 1236 | glad_glVertex4s = (PFNGLVERTEX4SPROC)load("glVertex4s"); 1237 | glad_glVertex4sv = (PFNGLVERTEX4SVPROC)load("glVertex4sv"); 1238 | glad_glClipPlane = (PFNGLCLIPPLANEPROC)load("glClipPlane"); 1239 | glad_glColorMaterial = (PFNGLCOLORMATERIALPROC)load("glColorMaterial"); 1240 | glad_glFogf = (PFNGLFOGFPROC)load("glFogf"); 1241 | glad_glFogfv = (PFNGLFOGFVPROC)load("glFogfv"); 1242 | glad_glFogi = (PFNGLFOGIPROC)load("glFogi"); 1243 | glad_glFogiv = (PFNGLFOGIVPROC)load("glFogiv"); 1244 | glad_glLightf = (PFNGLLIGHTFPROC)load("glLightf"); 1245 | glad_glLightfv = (PFNGLLIGHTFVPROC)load("glLightfv"); 1246 | glad_glLighti = (PFNGLLIGHTIPROC)load("glLighti"); 1247 | glad_glLightiv = (PFNGLLIGHTIVPROC)load("glLightiv"); 1248 | glad_glLightModelf = (PFNGLLIGHTMODELFPROC)load("glLightModelf"); 1249 | glad_glLightModelfv = (PFNGLLIGHTMODELFVPROC)load("glLightModelfv"); 1250 | glad_glLightModeli = (PFNGLLIGHTMODELIPROC)load("glLightModeli"); 1251 | glad_glLightModeliv = (PFNGLLIGHTMODELIVPROC)load("glLightModeliv"); 1252 | glad_glLineStipple = (PFNGLLINESTIPPLEPROC)load("glLineStipple"); 1253 | glad_glMaterialf = (PFNGLMATERIALFPROC)load("glMaterialf"); 1254 | glad_glMaterialfv = (PFNGLMATERIALFVPROC)load("glMaterialfv"); 1255 | glad_glMateriali = (PFNGLMATERIALIPROC)load("glMateriali"); 1256 | glad_glMaterialiv = (PFNGLMATERIALIVPROC)load("glMaterialiv"); 1257 | glad_glPolygonStipple = (PFNGLPOLYGONSTIPPLEPROC)load("glPolygonStipple"); 1258 | glad_glShadeModel = (PFNGLSHADEMODELPROC)load("glShadeModel"); 1259 | glad_glTexEnvf = (PFNGLTEXENVFPROC)load("glTexEnvf"); 1260 | glad_glTexEnvfv = (PFNGLTEXENVFVPROC)load("glTexEnvfv"); 1261 | glad_glTexEnvi = (PFNGLTEXENVIPROC)load("glTexEnvi"); 1262 | glad_glTexEnviv = (PFNGLTEXENVIVPROC)load("glTexEnviv"); 1263 | glad_glTexGend = (PFNGLTEXGENDPROC)load("glTexGend"); 1264 | glad_glTexGendv = (PFNGLTEXGENDVPROC)load("glTexGendv"); 1265 | glad_glTexGenf = (PFNGLTEXGENFPROC)load("glTexGenf"); 1266 | glad_glTexGenfv = (PFNGLTEXGENFVPROC)load("glTexGenfv"); 1267 | glad_glTexGeni = (PFNGLTEXGENIPROC)load("glTexGeni"); 1268 | glad_glTexGeniv = (PFNGLTEXGENIVPROC)load("glTexGeniv"); 1269 | glad_glFeedbackBuffer = (PFNGLFEEDBACKBUFFERPROC)load("glFeedbackBuffer"); 1270 | glad_glSelectBuffer = (PFNGLSELECTBUFFERPROC)load("glSelectBuffer"); 1271 | glad_glRenderMode = (PFNGLRENDERMODEPROC)load("glRenderMode"); 1272 | glad_glInitNames = (PFNGLINITNAMESPROC)load("glInitNames"); 1273 | glad_glLoadName = (PFNGLLOADNAMEPROC)load("glLoadName"); 1274 | glad_glPassThrough = (PFNGLPASSTHROUGHPROC)load("glPassThrough"); 1275 | glad_glPopName = (PFNGLPOPNAMEPROC)load("glPopName"); 1276 | glad_glPushName = (PFNGLPUSHNAMEPROC)load("glPushName"); 1277 | glad_glClearAccum = (PFNGLCLEARACCUMPROC)load("glClearAccum"); 1278 | glad_glClearIndex = (PFNGLCLEARINDEXPROC)load("glClearIndex"); 1279 | glad_glIndexMask = (PFNGLINDEXMASKPROC)load("glIndexMask"); 1280 | glad_glAccum = (PFNGLACCUMPROC)load("glAccum"); 1281 | glad_glPopAttrib = (PFNGLPOPATTRIBPROC)load("glPopAttrib"); 1282 | glad_glPushAttrib = (PFNGLPUSHATTRIBPROC)load("glPushAttrib"); 1283 | glad_glMap1d = (PFNGLMAP1DPROC)load("glMap1d"); 1284 | glad_glMap1f = (PFNGLMAP1FPROC)load("glMap1f"); 1285 | glad_glMap2d = (PFNGLMAP2DPROC)load("glMap2d"); 1286 | glad_glMap2f = (PFNGLMAP2FPROC)load("glMap2f"); 1287 | glad_glMapGrid1d = (PFNGLMAPGRID1DPROC)load("glMapGrid1d"); 1288 | glad_glMapGrid1f = (PFNGLMAPGRID1FPROC)load("glMapGrid1f"); 1289 | glad_glMapGrid2d = (PFNGLMAPGRID2DPROC)load("glMapGrid2d"); 1290 | glad_glMapGrid2f = (PFNGLMAPGRID2FPROC)load("glMapGrid2f"); 1291 | glad_glEvalCoord1d = (PFNGLEVALCOORD1DPROC)load("glEvalCoord1d"); 1292 | glad_glEvalCoord1dv = (PFNGLEVALCOORD1DVPROC)load("glEvalCoord1dv"); 1293 | glad_glEvalCoord1f = (PFNGLEVALCOORD1FPROC)load("glEvalCoord1f"); 1294 | glad_glEvalCoord1fv = (PFNGLEVALCOORD1FVPROC)load("glEvalCoord1fv"); 1295 | glad_glEvalCoord2d = (PFNGLEVALCOORD2DPROC)load("glEvalCoord2d"); 1296 | glad_glEvalCoord2dv = (PFNGLEVALCOORD2DVPROC)load("glEvalCoord2dv"); 1297 | glad_glEvalCoord2f = (PFNGLEVALCOORD2FPROC)load("glEvalCoord2f"); 1298 | glad_glEvalCoord2fv = (PFNGLEVALCOORD2FVPROC)load("glEvalCoord2fv"); 1299 | glad_glEvalMesh1 = (PFNGLEVALMESH1PROC)load("glEvalMesh1"); 1300 | glad_glEvalPoint1 = (PFNGLEVALPOINT1PROC)load("glEvalPoint1"); 1301 | glad_glEvalMesh2 = (PFNGLEVALMESH2PROC)load("glEvalMesh2"); 1302 | glad_glEvalPoint2 = (PFNGLEVALPOINT2PROC)load("glEvalPoint2"); 1303 | glad_glAlphaFunc = (PFNGLALPHAFUNCPROC)load("glAlphaFunc"); 1304 | glad_glPixelZoom = (PFNGLPIXELZOOMPROC)load("glPixelZoom"); 1305 | glad_glPixelTransferf = (PFNGLPIXELTRANSFERFPROC)load("glPixelTransferf"); 1306 | glad_glPixelTransferi = (PFNGLPIXELTRANSFERIPROC)load("glPixelTransferi"); 1307 | glad_glPixelMapfv = (PFNGLPIXELMAPFVPROC)load("glPixelMapfv"); 1308 | glad_glPixelMapuiv = (PFNGLPIXELMAPUIVPROC)load("glPixelMapuiv"); 1309 | glad_glPixelMapusv = (PFNGLPIXELMAPUSVPROC)load("glPixelMapusv"); 1310 | glad_glCopyPixels = (PFNGLCOPYPIXELSPROC)load("glCopyPixels"); 1311 | glad_glDrawPixels = (PFNGLDRAWPIXELSPROC)load("glDrawPixels"); 1312 | glad_glGetClipPlane = (PFNGLGETCLIPPLANEPROC)load("glGetClipPlane"); 1313 | glad_glGetLightfv = (PFNGLGETLIGHTFVPROC)load("glGetLightfv"); 1314 | glad_glGetLightiv = (PFNGLGETLIGHTIVPROC)load("glGetLightiv"); 1315 | glad_glGetMapdv = (PFNGLGETMAPDVPROC)load("glGetMapdv"); 1316 | glad_glGetMapfv = (PFNGLGETMAPFVPROC)load("glGetMapfv"); 1317 | glad_glGetMapiv = (PFNGLGETMAPIVPROC)load("glGetMapiv"); 1318 | glad_glGetMaterialfv = (PFNGLGETMATERIALFVPROC)load("glGetMaterialfv"); 1319 | glad_glGetMaterialiv = (PFNGLGETMATERIALIVPROC)load("glGetMaterialiv"); 1320 | glad_glGetPixelMapfv = (PFNGLGETPIXELMAPFVPROC)load("glGetPixelMapfv"); 1321 | glad_glGetPixelMapuiv = (PFNGLGETPIXELMAPUIVPROC)load("glGetPixelMapuiv"); 1322 | glad_glGetPixelMapusv = (PFNGLGETPIXELMAPUSVPROC)load("glGetPixelMapusv"); 1323 | glad_glGetPolygonStipple = (PFNGLGETPOLYGONSTIPPLEPROC)load("glGetPolygonStipple"); 1324 | glad_glGetTexEnvfv = (PFNGLGETTEXENVFVPROC)load("glGetTexEnvfv"); 1325 | glad_glGetTexEnviv = (PFNGLGETTEXENVIVPROC)load("glGetTexEnviv"); 1326 | glad_glGetTexGendv = (PFNGLGETTEXGENDVPROC)load("glGetTexGendv"); 1327 | glad_glGetTexGenfv = (PFNGLGETTEXGENFVPROC)load("glGetTexGenfv"); 1328 | glad_glGetTexGeniv = (PFNGLGETTEXGENIVPROC)load("glGetTexGeniv"); 1329 | glad_glIsList = (PFNGLISLISTPROC)load("glIsList"); 1330 | glad_glFrustum = (PFNGLFRUSTUMPROC)load("glFrustum"); 1331 | glad_glLoadIdentity = (PFNGLLOADIDENTITYPROC)load("glLoadIdentity"); 1332 | glad_glLoadMatrixf = (PFNGLLOADMATRIXFPROC)load("glLoadMatrixf"); 1333 | glad_glLoadMatrixd = (PFNGLLOADMATRIXDPROC)load("glLoadMatrixd"); 1334 | glad_glMatrixMode = (PFNGLMATRIXMODEPROC)load("glMatrixMode"); 1335 | glad_glMultMatrixf = (PFNGLMULTMATRIXFPROC)load("glMultMatrixf"); 1336 | glad_glMultMatrixd = (PFNGLMULTMATRIXDPROC)load("glMultMatrixd"); 1337 | glad_glOrtho = (PFNGLORTHOPROC)load("glOrtho"); 1338 | glad_glPopMatrix = (PFNGLPOPMATRIXPROC)load("glPopMatrix"); 1339 | glad_glPushMatrix = (PFNGLPUSHMATRIXPROC)load("glPushMatrix"); 1340 | glad_glRotated = (PFNGLROTATEDPROC)load("glRotated"); 1341 | glad_glRotatef = (PFNGLROTATEFPROC)load("glRotatef"); 1342 | glad_glScaled = (PFNGLSCALEDPROC)load("glScaled"); 1343 | glad_glScalef = (PFNGLSCALEFPROC)load("glScalef"); 1344 | glad_glTranslated = (PFNGLTRANSLATEDPROC)load("glTranslated"); 1345 | glad_glTranslatef = (PFNGLTRANSLATEFPROC)load("glTranslatef"); 1346 | } 1347 | static void load_GL_VERSION_1_1(GLADloadproc load) { 1348 | if(!GLAD_GL_VERSION_1_1) return; 1349 | glad_glDrawArrays = (PFNGLDRAWARRAYSPROC)load("glDrawArrays"); 1350 | glad_glDrawElements = (PFNGLDRAWELEMENTSPROC)load("glDrawElements"); 1351 | glad_glGetPointerv = (PFNGLGETPOINTERVPROC)load("glGetPointerv"); 1352 | glad_glPolygonOffset = (PFNGLPOLYGONOFFSETPROC)load("glPolygonOffset"); 1353 | glad_glCopyTexImage1D = (PFNGLCOPYTEXIMAGE1DPROC)load("glCopyTexImage1D"); 1354 | glad_glCopyTexImage2D = (PFNGLCOPYTEXIMAGE2DPROC)load("glCopyTexImage2D"); 1355 | glad_glCopyTexSubImage1D = (PFNGLCOPYTEXSUBIMAGE1DPROC)load("glCopyTexSubImage1D"); 1356 | glad_glCopyTexSubImage2D = (PFNGLCOPYTEXSUBIMAGE2DPROC)load("glCopyTexSubImage2D"); 1357 | glad_glTexSubImage1D = (PFNGLTEXSUBIMAGE1DPROC)load("glTexSubImage1D"); 1358 | glad_glTexSubImage2D = (PFNGLTEXSUBIMAGE2DPROC)load("glTexSubImage2D"); 1359 | glad_glBindTexture = (PFNGLBINDTEXTUREPROC)load("glBindTexture"); 1360 | glad_glDeleteTextures = (PFNGLDELETETEXTURESPROC)load("glDeleteTextures"); 1361 | glad_glGenTextures = (PFNGLGENTEXTURESPROC)load("glGenTextures"); 1362 | glad_glIsTexture = (PFNGLISTEXTUREPROC)load("glIsTexture"); 1363 | glad_glArrayElement = (PFNGLARRAYELEMENTPROC)load("glArrayElement"); 1364 | glad_glColorPointer = (PFNGLCOLORPOINTERPROC)load("glColorPointer"); 1365 | glad_glDisableClientState = (PFNGLDISABLECLIENTSTATEPROC)load("glDisableClientState"); 1366 | glad_glEdgeFlagPointer = (PFNGLEDGEFLAGPOINTERPROC)load("glEdgeFlagPointer"); 1367 | glad_glEnableClientState = (PFNGLENABLECLIENTSTATEPROC)load("glEnableClientState"); 1368 | glad_glIndexPointer = (PFNGLINDEXPOINTERPROC)load("glIndexPointer"); 1369 | glad_glInterleavedArrays = (PFNGLINTERLEAVEDARRAYSPROC)load("glInterleavedArrays"); 1370 | glad_glNormalPointer = (PFNGLNORMALPOINTERPROC)load("glNormalPointer"); 1371 | glad_glTexCoordPointer = (PFNGLTEXCOORDPOINTERPROC)load("glTexCoordPointer"); 1372 | glad_glVertexPointer = (PFNGLVERTEXPOINTERPROC)load("glVertexPointer"); 1373 | glad_glAreTexturesResident = (PFNGLARETEXTURESRESIDENTPROC)load("glAreTexturesResident"); 1374 | glad_glPrioritizeTextures = (PFNGLPRIORITIZETEXTURESPROC)load("glPrioritizeTextures"); 1375 | glad_glIndexub = (PFNGLINDEXUBPROC)load("glIndexub"); 1376 | glad_glIndexubv = (PFNGLINDEXUBVPROC)load("glIndexubv"); 1377 | glad_glPopClientAttrib = (PFNGLPOPCLIENTATTRIBPROC)load("glPopClientAttrib"); 1378 | glad_glPushClientAttrib = (PFNGLPUSHCLIENTATTRIBPROC)load("glPushClientAttrib"); 1379 | } 1380 | static void load_GL_VERSION_1_2(GLADloadproc load) { 1381 | if(!GLAD_GL_VERSION_1_2) return; 1382 | glad_glDrawRangeElements = (PFNGLDRAWRANGEELEMENTSPROC)load("glDrawRangeElements"); 1383 | glad_glTexImage3D = (PFNGLTEXIMAGE3DPROC)load("glTexImage3D"); 1384 | glad_glTexSubImage3D = (PFNGLTEXSUBIMAGE3DPROC)load("glTexSubImage3D"); 1385 | glad_glCopyTexSubImage3D = (PFNGLCOPYTEXSUBIMAGE3DPROC)load("glCopyTexSubImage3D"); 1386 | } 1387 | static void load_GL_VERSION_1_3(GLADloadproc load) { 1388 | if(!GLAD_GL_VERSION_1_3) return; 1389 | glad_glActiveTexture = (PFNGLACTIVETEXTUREPROC)load("glActiveTexture"); 1390 | glad_glSampleCoverage = (PFNGLSAMPLECOVERAGEPROC)load("glSampleCoverage"); 1391 | glad_glCompressedTexImage3D = (PFNGLCOMPRESSEDTEXIMAGE3DPROC)load("glCompressedTexImage3D"); 1392 | glad_glCompressedTexImage2D = (PFNGLCOMPRESSEDTEXIMAGE2DPROC)load("glCompressedTexImage2D"); 1393 | glad_glCompressedTexImage1D = (PFNGLCOMPRESSEDTEXIMAGE1DPROC)load("glCompressedTexImage1D"); 1394 | glad_glCompressedTexSubImage3D = (PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC)load("glCompressedTexSubImage3D"); 1395 | glad_glCompressedTexSubImage2D = (PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC)load("glCompressedTexSubImage2D"); 1396 | glad_glCompressedTexSubImage1D = (PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC)load("glCompressedTexSubImage1D"); 1397 | glad_glGetCompressedTexImage = (PFNGLGETCOMPRESSEDTEXIMAGEPROC)load("glGetCompressedTexImage"); 1398 | glad_glClientActiveTexture = (PFNGLCLIENTACTIVETEXTUREPROC)load("glClientActiveTexture"); 1399 | glad_glMultiTexCoord1d = (PFNGLMULTITEXCOORD1DPROC)load("glMultiTexCoord1d"); 1400 | glad_glMultiTexCoord1dv = (PFNGLMULTITEXCOORD1DVPROC)load("glMultiTexCoord1dv"); 1401 | glad_glMultiTexCoord1f = (PFNGLMULTITEXCOORD1FPROC)load("glMultiTexCoord1f"); 1402 | glad_glMultiTexCoord1fv = (PFNGLMULTITEXCOORD1FVPROC)load("glMultiTexCoord1fv"); 1403 | glad_glMultiTexCoord1i = (PFNGLMULTITEXCOORD1IPROC)load("glMultiTexCoord1i"); 1404 | glad_glMultiTexCoord1iv = (PFNGLMULTITEXCOORD1IVPROC)load("glMultiTexCoord1iv"); 1405 | glad_glMultiTexCoord1s = (PFNGLMULTITEXCOORD1SPROC)load("glMultiTexCoord1s"); 1406 | glad_glMultiTexCoord1sv = (PFNGLMULTITEXCOORD1SVPROC)load("glMultiTexCoord1sv"); 1407 | glad_glMultiTexCoord2d = (PFNGLMULTITEXCOORD2DPROC)load("glMultiTexCoord2d"); 1408 | glad_glMultiTexCoord2dv = (PFNGLMULTITEXCOORD2DVPROC)load("glMultiTexCoord2dv"); 1409 | glad_glMultiTexCoord2f = (PFNGLMULTITEXCOORD2FPROC)load("glMultiTexCoord2f"); 1410 | glad_glMultiTexCoord2fv = (PFNGLMULTITEXCOORD2FVPROC)load("glMultiTexCoord2fv"); 1411 | glad_glMultiTexCoord2i = (PFNGLMULTITEXCOORD2IPROC)load("glMultiTexCoord2i"); 1412 | glad_glMultiTexCoord2iv = (PFNGLMULTITEXCOORD2IVPROC)load("glMultiTexCoord2iv"); 1413 | glad_glMultiTexCoord2s = (PFNGLMULTITEXCOORD2SPROC)load("glMultiTexCoord2s"); 1414 | glad_glMultiTexCoord2sv = (PFNGLMULTITEXCOORD2SVPROC)load("glMultiTexCoord2sv"); 1415 | glad_glMultiTexCoord3d = (PFNGLMULTITEXCOORD3DPROC)load("glMultiTexCoord3d"); 1416 | glad_glMultiTexCoord3dv = (PFNGLMULTITEXCOORD3DVPROC)load("glMultiTexCoord3dv"); 1417 | glad_glMultiTexCoord3f = (PFNGLMULTITEXCOORD3FPROC)load("glMultiTexCoord3f"); 1418 | glad_glMultiTexCoord3fv = (PFNGLMULTITEXCOORD3FVPROC)load("glMultiTexCoord3fv"); 1419 | glad_glMultiTexCoord3i = (PFNGLMULTITEXCOORD3IPROC)load("glMultiTexCoord3i"); 1420 | glad_glMultiTexCoord3iv = (PFNGLMULTITEXCOORD3IVPROC)load("glMultiTexCoord3iv"); 1421 | glad_glMultiTexCoord3s = (PFNGLMULTITEXCOORD3SPROC)load("glMultiTexCoord3s"); 1422 | glad_glMultiTexCoord3sv = (PFNGLMULTITEXCOORD3SVPROC)load("glMultiTexCoord3sv"); 1423 | glad_glMultiTexCoord4d = (PFNGLMULTITEXCOORD4DPROC)load("glMultiTexCoord4d"); 1424 | glad_glMultiTexCoord4dv = (PFNGLMULTITEXCOORD4DVPROC)load("glMultiTexCoord4dv"); 1425 | glad_glMultiTexCoord4f = (PFNGLMULTITEXCOORD4FPROC)load("glMultiTexCoord4f"); 1426 | glad_glMultiTexCoord4fv = (PFNGLMULTITEXCOORD4FVPROC)load("glMultiTexCoord4fv"); 1427 | glad_glMultiTexCoord4i = (PFNGLMULTITEXCOORD4IPROC)load("glMultiTexCoord4i"); 1428 | glad_glMultiTexCoord4iv = (PFNGLMULTITEXCOORD4IVPROC)load("glMultiTexCoord4iv"); 1429 | glad_glMultiTexCoord4s = (PFNGLMULTITEXCOORD4SPROC)load("glMultiTexCoord4s"); 1430 | glad_glMultiTexCoord4sv = (PFNGLMULTITEXCOORD4SVPROC)load("glMultiTexCoord4sv"); 1431 | glad_glLoadTransposeMatrixf = (PFNGLLOADTRANSPOSEMATRIXFPROC)load("glLoadTransposeMatrixf"); 1432 | glad_glLoadTransposeMatrixd = (PFNGLLOADTRANSPOSEMATRIXDPROC)load("glLoadTransposeMatrixd"); 1433 | glad_glMultTransposeMatrixf = (PFNGLMULTTRANSPOSEMATRIXFPROC)load("glMultTransposeMatrixf"); 1434 | glad_glMultTransposeMatrixd = (PFNGLMULTTRANSPOSEMATRIXDPROC)load("glMultTransposeMatrixd"); 1435 | } 1436 | static void load_GL_VERSION_1_4(GLADloadproc load) { 1437 | if(!GLAD_GL_VERSION_1_4) return; 1438 | glad_glBlendFuncSeparate = (PFNGLBLENDFUNCSEPARATEPROC)load("glBlendFuncSeparate"); 1439 | glad_glMultiDrawArrays = (PFNGLMULTIDRAWARRAYSPROC)load("glMultiDrawArrays"); 1440 | glad_glMultiDrawElements = (PFNGLMULTIDRAWELEMENTSPROC)load("glMultiDrawElements"); 1441 | glad_glPointParameterf = (PFNGLPOINTPARAMETERFPROC)load("glPointParameterf"); 1442 | glad_glPointParameterfv = (PFNGLPOINTPARAMETERFVPROC)load("glPointParameterfv"); 1443 | glad_glPointParameteri = (PFNGLPOINTPARAMETERIPROC)load("glPointParameteri"); 1444 | glad_glPointParameteriv = (PFNGLPOINTPARAMETERIVPROC)load("glPointParameteriv"); 1445 | glad_glFogCoordf = (PFNGLFOGCOORDFPROC)load("glFogCoordf"); 1446 | glad_glFogCoordfv = (PFNGLFOGCOORDFVPROC)load("glFogCoordfv"); 1447 | glad_glFogCoordd = (PFNGLFOGCOORDDPROC)load("glFogCoordd"); 1448 | glad_glFogCoorddv = (PFNGLFOGCOORDDVPROC)load("glFogCoorddv"); 1449 | glad_glFogCoordPointer = (PFNGLFOGCOORDPOINTERPROC)load("glFogCoordPointer"); 1450 | glad_glSecondaryColor3b = (PFNGLSECONDARYCOLOR3BPROC)load("glSecondaryColor3b"); 1451 | glad_glSecondaryColor3bv = (PFNGLSECONDARYCOLOR3BVPROC)load("glSecondaryColor3bv"); 1452 | glad_glSecondaryColor3d = (PFNGLSECONDARYCOLOR3DPROC)load("glSecondaryColor3d"); 1453 | glad_glSecondaryColor3dv = (PFNGLSECONDARYCOLOR3DVPROC)load("glSecondaryColor3dv"); 1454 | glad_glSecondaryColor3f = (PFNGLSECONDARYCOLOR3FPROC)load("glSecondaryColor3f"); 1455 | glad_glSecondaryColor3fv = (PFNGLSECONDARYCOLOR3FVPROC)load("glSecondaryColor3fv"); 1456 | glad_glSecondaryColor3i = (PFNGLSECONDARYCOLOR3IPROC)load("glSecondaryColor3i"); 1457 | glad_glSecondaryColor3iv = (PFNGLSECONDARYCOLOR3IVPROC)load("glSecondaryColor3iv"); 1458 | glad_glSecondaryColor3s = (PFNGLSECONDARYCOLOR3SPROC)load("glSecondaryColor3s"); 1459 | glad_glSecondaryColor3sv = (PFNGLSECONDARYCOLOR3SVPROC)load("glSecondaryColor3sv"); 1460 | glad_glSecondaryColor3ub = (PFNGLSECONDARYCOLOR3UBPROC)load("glSecondaryColor3ub"); 1461 | glad_glSecondaryColor3ubv = (PFNGLSECONDARYCOLOR3UBVPROC)load("glSecondaryColor3ubv"); 1462 | glad_glSecondaryColor3ui = (PFNGLSECONDARYCOLOR3UIPROC)load("glSecondaryColor3ui"); 1463 | glad_glSecondaryColor3uiv = (PFNGLSECONDARYCOLOR3UIVPROC)load("glSecondaryColor3uiv"); 1464 | glad_glSecondaryColor3us = (PFNGLSECONDARYCOLOR3USPROC)load("glSecondaryColor3us"); 1465 | glad_glSecondaryColor3usv = (PFNGLSECONDARYCOLOR3USVPROC)load("glSecondaryColor3usv"); 1466 | glad_glSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC)load("glSecondaryColorPointer"); 1467 | glad_glWindowPos2d = (PFNGLWINDOWPOS2DPROC)load("glWindowPos2d"); 1468 | glad_glWindowPos2dv = (PFNGLWINDOWPOS2DVPROC)load("glWindowPos2dv"); 1469 | glad_glWindowPos2f = (PFNGLWINDOWPOS2FPROC)load("glWindowPos2f"); 1470 | glad_glWindowPos2fv = (PFNGLWINDOWPOS2FVPROC)load("glWindowPos2fv"); 1471 | glad_glWindowPos2i = (PFNGLWINDOWPOS2IPROC)load("glWindowPos2i"); 1472 | glad_glWindowPos2iv = (PFNGLWINDOWPOS2IVPROC)load("glWindowPos2iv"); 1473 | glad_glWindowPos2s = (PFNGLWINDOWPOS2SPROC)load("glWindowPos2s"); 1474 | glad_glWindowPos2sv = (PFNGLWINDOWPOS2SVPROC)load("glWindowPos2sv"); 1475 | glad_glWindowPos3d = (PFNGLWINDOWPOS3DPROC)load("glWindowPos3d"); 1476 | glad_glWindowPos3dv = (PFNGLWINDOWPOS3DVPROC)load("glWindowPos3dv"); 1477 | glad_glWindowPos3f = (PFNGLWINDOWPOS3FPROC)load("glWindowPos3f"); 1478 | glad_glWindowPos3fv = (PFNGLWINDOWPOS3FVPROC)load("glWindowPos3fv"); 1479 | glad_glWindowPos3i = (PFNGLWINDOWPOS3IPROC)load("glWindowPos3i"); 1480 | glad_glWindowPos3iv = (PFNGLWINDOWPOS3IVPROC)load("glWindowPos3iv"); 1481 | glad_glWindowPos3s = (PFNGLWINDOWPOS3SPROC)load("glWindowPos3s"); 1482 | glad_glWindowPos3sv = (PFNGLWINDOWPOS3SVPROC)load("glWindowPos3sv"); 1483 | glad_glBlendColor = (PFNGLBLENDCOLORPROC)load("glBlendColor"); 1484 | glad_glBlendEquation = (PFNGLBLENDEQUATIONPROC)load("glBlendEquation"); 1485 | } 1486 | static void load_GL_VERSION_1_5(GLADloadproc load) { 1487 | if(!GLAD_GL_VERSION_1_5) return; 1488 | glad_glGenQueries = (PFNGLGENQUERIESPROC)load("glGenQueries"); 1489 | glad_glDeleteQueries = (PFNGLDELETEQUERIESPROC)load("glDeleteQueries"); 1490 | glad_glIsQuery = (PFNGLISQUERYPROC)load("glIsQuery"); 1491 | glad_glBeginQuery = (PFNGLBEGINQUERYPROC)load("glBeginQuery"); 1492 | glad_glEndQuery = (PFNGLENDQUERYPROC)load("glEndQuery"); 1493 | glad_glGetQueryiv = (PFNGLGETQUERYIVPROC)load("glGetQueryiv"); 1494 | glad_glGetQueryObjectiv = (PFNGLGETQUERYOBJECTIVPROC)load("glGetQueryObjectiv"); 1495 | glad_glGetQueryObjectuiv = (PFNGLGETQUERYOBJECTUIVPROC)load("glGetQueryObjectuiv"); 1496 | glad_glBindBuffer = (PFNGLBINDBUFFERPROC)load("glBindBuffer"); 1497 | glad_glDeleteBuffers = (PFNGLDELETEBUFFERSPROC)load("glDeleteBuffers"); 1498 | glad_glGenBuffers = (PFNGLGENBUFFERSPROC)load("glGenBuffers"); 1499 | glad_glIsBuffer = (PFNGLISBUFFERPROC)load("glIsBuffer"); 1500 | glad_glBufferData = (PFNGLBUFFERDATAPROC)load("glBufferData"); 1501 | glad_glBufferSubData = (PFNGLBUFFERSUBDATAPROC)load("glBufferSubData"); 1502 | glad_glGetBufferSubData = (PFNGLGETBUFFERSUBDATAPROC)load("glGetBufferSubData"); 1503 | glad_glMapBuffer = (PFNGLMAPBUFFERPROC)load("glMapBuffer"); 1504 | glad_glUnmapBuffer = (PFNGLUNMAPBUFFERPROC)load("glUnmapBuffer"); 1505 | glad_glGetBufferParameteriv = (PFNGLGETBUFFERPARAMETERIVPROC)load("glGetBufferParameteriv"); 1506 | glad_glGetBufferPointerv = (PFNGLGETBUFFERPOINTERVPROC)load("glGetBufferPointerv"); 1507 | } 1508 | static void load_GL_VERSION_2_0(GLADloadproc load) { 1509 | if(!GLAD_GL_VERSION_2_0) return; 1510 | glad_glBlendEquationSeparate = (PFNGLBLENDEQUATIONSEPARATEPROC)load("glBlendEquationSeparate"); 1511 | glad_glDrawBuffers = (PFNGLDRAWBUFFERSPROC)load("glDrawBuffers"); 1512 | glad_glStencilOpSeparate = (PFNGLSTENCILOPSEPARATEPROC)load("glStencilOpSeparate"); 1513 | glad_glStencilFuncSeparate = (PFNGLSTENCILFUNCSEPARATEPROC)load("glStencilFuncSeparate"); 1514 | glad_glStencilMaskSeparate = (PFNGLSTENCILMASKSEPARATEPROC)load("glStencilMaskSeparate"); 1515 | glad_glAttachShader = (PFNGLATTACHSHADERPROC)load("glAttachShader"); 1516 | glad_glBindAttribLocation = (PFNGLBINDATTRIBLOCATIONPROC)load("glBindAttribLocation"); 1517 | glad_glCompileShader = (PFNGLCOMPILESHADERPROC)load("glCompileShader"); 1518 | glad_glCreateProgram = (PFNGLCREATEPROGRAMPROC)load("glCreateProgram"); 1519 | glad_glCreateShader = (PFNGLCREATESHADERPROC)load("glCreateShader"); 1520 | glad_glDeleteProgram = (PFNGLDELETEPROGRAMPROC)load("glDeleteProgram"); 1521 | glad_glDeleteShader = (PFNGLDELETESHADERPROC)load("glDeleteShader"); 1522 | glad_glDetachShader = (PFNGLDETACHSHADERPROC)load("glDetachShader"); 1523 | glad_glDisableVertexAttribArray = (PFNGLDISABLEVERTEXATTRIBARRAYPROC)load("glDisableVertexAttribArray"); 1524 | glad_glEnableVertexAttribArray = (PFNGLENABLEVERTEXATTRIBARRAYPROC)load("glEnableVertexAttribArray"); 1525 | glad_glGetActiveAttrib = (PFNGLGETACTIVEATTRIBPROC)load("glGetActiveAttrib"); 1526 | glad_glGetActiveUniform = (PFNGLGETACTIVEUNIFORMPROC)load("glGetActiveUniform"); 1527 | glad_glGetAttachedShaders = (PFNGLGETATTACHEDSHADERSPROC)load("glGetAttachedShaders"); 1528 | glad_glGetAttribLocation = (PFNGLGETATTRIBLOCATIONPROC)load("glGetAttribLocation"); 1529 | glad_glGetProgramiv = (PFNGLGETPROGRAMIVPROC)load("glGetProgramiv"); 1530 | glad_glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC)load("glGetProgramInfoLog"); 1531 | glad_glGetShaderiv = (PFNGLGETSHADERIVPROC)load("glGetShaderiv"); 1532 | glad_glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC)load("glGetShaderInfoLog"); 1533 | glad_glGetShaderSource = (PFNGLGETSHADERSOURCEPROC)load("glGetShaderSource"); 1534 | glad_glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC)load("glGetUniformLocation"); 1535 | glad_glGetUniformfv = (PFNGLGETUNIFORMFVPROC)load("glGetUniformfv"); 1536 | glad_glGetUniformiv = (PFNGLGETUNIFORMIVPROC)load("glGetUniformiv"); 1537 | glad_glGetVertexAttribdv = (PFNGLGETVERTEXATTRIBDVPROC)load("glGetVertexAttribdv"); 1538 | glad_glGetVertexAttribfv = (PFNGLGETVERTEXATTRIBFVPROC)load("glGetVertexAttribfv"); 1539 | glad_glGetVertexAttribiv = (PFNGLGETVERTEXATTRIBIVPROC)load("glGetVertexAttribiv"); 1540 | glad_glGetVertexAttribPointerv = (PFNGLGETVERTEXATTRIBPOINTERVPROC)load("glGetVertexAttribPointerv"); 1541 | glad_glIsProgram = (PFNGLISPROGRAMPROC)load("glIsProgram"); 1542 | glad_glIsShader = (PFNGLISSHADERPROC)load("glIsShader"); 1543 | glad_glLinkProgram = (PFNGLLINKPROGRAMPROC)load("glLinkProgram"); 1544 | glad_glShaderSource = (PFNGLSHADERSOURCEPROC)load("glShaderSource"); 1545 | glad_glUseProgram = (PFNGLUSEPROGRAMPROC)load("glUseProgram"); 1546 | glad_glUniform1f = (PFNGLUNIFORM1FPROC)load("glUniform1f"); 1547 | glad_glUniform2f = (PFNGLUNIFORM2FPROC)load("glUniform2f"); 1548 | glad_glUniform3f = (PFNGLUNIFORM3FPROC)load("glUniform3f"); 1549 | glad_glUniform4f = (PFNGLUNIFORM4FPROC)load("glUniform4f"); 1550 | glad_glUniform1i = (PFNGLUNIFORM1IPROC)load("glUniform1i"); 1551 | glad_glUniform2i = (PFNGLUNIFORM2IPROC)load("glUniform2i"); 1552 | glad_glUniform3i = (PFNGLUNIFORM3IPROC)load("glUniform3i"); 1553 | glad_glUniform4i = (PFNGLUNIFORM4IPROC)load("glUniform4i"); 1554 | glad_glUniform1fv = (PFNGLUNIFORM1FVPROC)load("glUniform1fv"); 1555 | glad_glUniform2fv = (PFNGLUNIFORM2FVPROC)load("glUniform2fv"); 1556 | glad_glUniform3fv = (PFNGLUNIFORM3FVPROC)load("glUniform3fv"); 1557 | glad_glUniform4fv = (PFNGLUNIFORM4FVPROC)load("glUniform4fv"); 1558 | glad_glUniform1iv = (PFNGLUNIFORM1IVPROC)load("glUniform1iv"); 1559 | glad_glUniform2iv = (PFNGLUNIFORM2IVPROC)load("glUniform2iv"); 1560 | glad_glUniform3iv = (PFNGLUNIFORM3IVPROC)load("glUniform3iv"); 1561 | glad_glUniform4iv = (PFNGLUNIFORM4IVPROC)load("glUniform4iv"); 1562 | glad_glUniformMatrix2fv = (PFNGLUNIFORMMATRIX2FVPROC)load("glUniformMatrix2fv"); 1563 | glad_glUniformMatrix3fv = (PFNGLUNIFORMMATRIX3FVPROC)load("glUniformMatrix3fv"); 1564 | glad_glUniformMatrix4fv = (PFNGLUNIFORMMATRIX4FVPROC)load("glUniformMatrix4fv"); 1565 | glad_glValidateProgram = (PFNGLVALIDATEPROGRAMPROC)load("glValidateProgram"); 1566 | glad_glVertexAttrib1d = (PFNGLVERTEXATTRIB1DPROC)load("glVertexAttrib1d"); 1567 | glad_glVertexAttrib1dv = (PFNGLVERTEXATTRIB1DVPROC)load("glVertexAttrib1dv"); 1568 | glad_glVertexAttrib1f = (PFNGLVERTEXATTRIB1FPROC)load("glVertexAttrib1f"); 1569 | glad_glVertexAttrib1fv = (PFNGLVERTEXATTRIB1FVPROC)load("glVertexAttrib1fv"); 1570 | glad_glVertexAttrib1s = (PFNGLVERTEXATTRIB1SPROC)load("glVertexAttrib1s"); 1571 | glad_glVertexAttrib1sv = (PFNGLVERTEXATTRIB1SVPROC)load("glVertexAttrib1sv"); 1572 | glad_glVertexAttrib2d = (PFNGLVERTEXATTRIB2DPROC)load("glVertexAttrib2d"); 1573 | glad_glVertexAttrib2dv = (PFNGLVERTEXATTRIB2DVPROC)load("glVertexAttrib2dv"); 1574 | glad_glVertexAttrib2f = (PFNGLVERTEXATTRIB2FPROC)load("glVertexAttrib2f"); 1575 | glad_glVertexAttrib2fv = (PFNGLVERTEXATTRIB2FVPROC)load("glVertexAttrib2fv"); 1576 | glad_glVertexAttrib2s = (PFNGLVERTEXATTRIB2SPROC)load("glVertexAttrib2s"); 1577 | glad_glVertexAttrib2sv = (PFNGLVERTEXATTRIB2SVPROC)load("glVertexAttrib2sv"); 1578 | glad_glVertexAttrib3d = (PFNGLVERTEXATTRIB3DPROC)load("glVertexAttrib3d"); 1579 | glad_glVertexAttrib3dv = (PFNGLVERTEXATTRIB3DVPROC)load("glVertexAttrib3dv"); 1580 | glad_glVertexAttrib3f = (PFNGLVERTEXATTRIB3FPROC)load("glVertexAttrib3f"); 1581 | glad_glVertexAttrib3fv = (PFNGLVERTEXATTRIB3FVPROC)load("glVertexAttrib3fv"); 1582 | glad_glVertexAttrib3s = (PFNGLVERTEXATTRIB3SPROC)load("glVertexAttrib3s"); 1583 | glad_glVertexAttrib3sv = (PFNGLVERTEXATTRIB3SVPROC)load("glVertexAttrib3sv"); 1584 | glad_glVertexAttrib4Nbv = (PFNGLVERTEXATTRIB4NBVPROC)load("glVertexAttrib4Nbv"); 1585 | glad_glVertexAttrib4Niv = (PFNGLVERTEXATTRIB4NIVPROC)load("glVertexAttrib4Niv"); 1586 | glad_glVertexAttrib4Nsv = (PFNGLVERTEXATTRIB4NSVPROC)load("glVertexAttrib4Nsv"); 1587 | glad_glVertexAttrib4Nub = (PFNGLVERTEXATTRIB4NUBPROC)load("glVertexAttrib4Nub"); 1588 | glad_glVertexAttrib4Nubv = (PFNGLVERTEXATTRIB4NUBVPROC)load("glVertexAttrib4Nubv"); 1589 | glad_glVertexAttrib4Nuiv = (PFNGLVERTEXATTRIB4NUIVPROC)load("glVertexAttrib4Nuiv"); 1590 | glad_glVertexAttrib4Nusv = (PFNGLVERTEXATTRIB4NUSVPROC)load("glVertexAttrib4Nusv"); 1591 | glad_glVertexAttrib4bv = (PFNGLVERTEXATTRIB4BVPROC)load("glVertexAttrib4bv"); 1592 | glad_glVertexAttrib4d = (PFNGLVERTEXATTRIB4DPROC)load("glVertexAttrib4d"); 1593 | glad_glVertexAttrib4dv = (PFNGLVERTEXATTRIB4DVPROC)load("glVertexAttrib4dv"); 1594 | glad_glVertexAttrib4f = (PFNGLVERTEXATTRIB4FPROC)load("glVertexAttrib4f"); 1595 | glad_glVertexAttrib4fv = (PFNGLVERTEXATTRIB4FVPROC)load("glVertexAttrib4fv"); 1596 | glad_glVertexAttrib4iv = (PFNGLVERTEXATTRIB4IVPROC)load("glVertexAttrib4iv"); 1597 | glad_glVertexAttrib4s = (PFNGLVERTEXATTRIB4SPROC)load("glVertexAttrib4s"); 1598 | glad_glVertexAttrib4sv = (PFNGLVERTEXATTRIB4SVPROC)load("glVertexAttrib4sv"); 1599 | glad_glVertexAttrib4ubv = (PFNGLVERTEXATTRIB4UBVPROC)load("glVertexAttrib4ubv"); 1600 | glad_glVertexAttrib4uiv = (PFNGLVERTEXATTRIB4UIVPROC)load("glVertexAttrib4uiv"); 1601 | glad_glVertexAttrib4usv = (PFNGLVERTEXATTRIB4USVPROC)load("glVertexAttrib4usv"); 1602 | glad_glVertexAttribPointer = (PFNGLVERTEXATTRIBPOINTERPROC)load("glVertexAttribPointer"); 1603 | } 1604 | static void load_GL_VERSION_2_1(GLADloadproc load) { 1605 | if(!GLAD_GL_VERSION_2_1) return; 1606 | glad_glUniformMatrix2x3fv = (PFNGLUNIFORMMATRIX2X3FVPROC)load("glUniformMatrix2x3fv"); 1607 | glad_glUniformMatrix3x2fv = (PFNGLUNIFORMMATRIX3X2FVPROC)load("glUniformMatrix3x2fv"); 1608 | glad_glUniformMatrix2x4fv = (PFNGLUNIFORMMATRIX2X4FVPROC)load("glUniformMatrix2x4fv"); 1609 | glad_glUniformMatrix4x2fv = (PFNGLUNIFORMMATRIX4X2FVPROC)load("glUniformMatrix4x2fv"); 1610 | glad_glUniformMatrix3x4fv = (PFNGLUNIFORMMATRIX3X4FVPROC)load("glUniformMatrix3x4fv"); 1611 | glad_glUniformMatrix4x3fv = (PFNGLUNIFORMMATRIX4X3FVPROC)load("glUniformMatrix4x3fv"); 1612 | } 1613 | static void load_GL_VERSION_3_0(GLADloadproc load) { 1614 | if(!GLAD_GL_VERSION_3_0) return; 1615 | glad_glColorMaski = (PFNGLCOLORMASKIPROC)load("glColorMaski"); 1616 | glad_glGetBooleani_v = (PFNGLGETBOOLEANI_VPROC)load("glGetBooleani_v"); 1617 | glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); 1618 | glad_glEnablei = (PFNGLENABLEIPROC)load("glEnablei"); 1619 | glad_glDisablei = (PFNGLDISABLEIPROC)load("glDisablei"); 1620 | glad_glIsEnabledi = (PFNGLISENABLEDIPROC)load("glIsEnabledi"); 1621 | glad_glBeginTransformFeedback = (PFNGLBEGINTRANSFORMFEEDBACKPROC)load("glBeginTransformFeedback"); 1622 | glad_glEndTransformFeedback = (PFNGLENDTRANSFORMFEEDBACKPROC)load("glEndTransformFeedback"); 1623 | glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); 1624 | glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); 1625 | glad_glTransformFeedbackVaryings = (PFNGLTRANSFORMFEEDBACKVARYINGSPROC)load("glTransformFeedbackVaryings"); 1626 | glad_glGetTransformFeedbackVarying = (PFNGLGETTRANSFORMFEEDBACKVARYINGPROC)load("glGetTransformFeedbackVarying"); 1627 | glad_glClampColor = (PFNGLCLAMPCOLORPROC)load("glClampColor"); 1628 | glad_glBeginConditionalRender = (PFNGLBEGINCONDITIONALRENDERPROC)load("glBeginConditionalRender"); 1629 | glad_glEndConditionalRender = (PFNGLENDCONDITIONALRENDERPROC)load("glEndConditionalRender"); 1630 | glad_glVertexAttribIPointer = (PFNGLVERTEXATTRIBIPOINTERPROC)load("glVertexAttribIPointer"); 1631 | glad_glGetVertexAttribIiv = (PFNGLGETVERTEXATTRIBIIVPROC)load("glGetVertexAttribIiv"); 1632 | glad_glGetVertexAttribIuiv = (PFNGLGETVERTEXATTRIBIUIVPROC)load("glGetVertexAttribIuiv"); 1633 | glad_glVertexAttribI1i = (PFNGLVERTEXATTRIBI1IPROC)load("glVertexAttribI1i"); 1634 | glad_glVertexAttribI2i = (PFNGLVERTEXATTRIBI2IPROC)load("glVertexAttribI2i"); 1635 | glad_glVertexAttribI3i = (PFNGLVERTEXATTRIBI3IPROC)load("glVertexAttribI3i"); 1636 | glad_glVertexAttribI4i = (PFNGLVERTEXATTRIBI4IPROC)load("glVertexAttribI4i"); 1637 | glad_glVertexAttribI1ui = (PFNGLVERTEXATTRIBI1UIPROC)load("glVertexAttribI1ui"); 1638 | glad_glVertexAttribI2ui = (PFNGLVERTEXATTRIBI2UIPROC)load("glVertexAttribI2ui"); 1639 | glad_glVertexAttribI3ui = (PFNGLVERTEXATTRIBI3UIPROC)load("glVertexAttribI3ui"); 1640 | glad_glVertexAttribI4ui = (PFNGLVERTEXATTRIBI4UIPROC)load("glVertexAttribI4ui"); 1641 | glad_glVertexAttribI1iv = (PFNGLVERTEXATTRIBI1IVPROC)load("glVertexAttribI1iv"); 1642 | glad_glVertexAttribI2iv = (PFNGLVERTEXATTRIBI2IVPROC)load("glVertexAttribI2iv"); 1643 | glad_glVertexAttribI3iv = (PFNGLVERTEXATTRIBI3IVPROC)load("glVertexAttribI3iv"); 1644 | glad_glVertexAttribI4iv = (PFNGLVERTEXATTRIBI4IVPROC)load("glVertexAttribI4iv"); 1645 | glad_glVertexAttribI1uiv = (PFNGLVERTEXATTRIBI1UIVPROC)load("glVertexAttribI1uiv"); 1646 | glad_glVertexAttribI2uiv = (PFNGLVERTEXATTRIBI2UIVPROC)load("glVertexAttribI2uiv"); 1647 | glad_glVertexAttribI3uiv = (PFNGLVERTEXATTRIBI3UIVPROC)load("glVertexAttribI3uiv"); 1648 | glad_glVertexAttribI4uiv = (PFNGLVERTEXATTRIBI4UIVPROC)load("glVertexAttribI4uiv"); 1649 | glad_glVertexAttribI4bv = (PFNGLVERTEXATTRIBI4BVPROC)load("glVertexAttribI4bv"); 1650 | glad_glVertexAttribI4sv = (PFNGLVERTEXATTRIBI4SVPROC)load("glVertexAttribI4sv"); 1651 | glad_glVertexAttribI4ubv = (PFNGLVERTEXATTRIBI4UBVPROC)load("glVertexAttribI4ubv"); 1652 | glad_glVertexAttribI4usv = (PFNGLVERTEXATTRIBI4USVPROC)load("glVertexAttribI4usv"); 1653 | glad_glGetUniformuiv = (PFNGLGETUNIFORMUIVPROC)load("glGetUniformuiv"); 1654 | glad_glBindFragDataLocation = (PFNGLBINDFRAGDATALOCATIONPROC)load("glBindFragDataLocation"); 1655 | glad_glGetFragDataLocation = (PFNGLGETFRAGDATALOCATIONPROC)load("glGetFragDataLocation"); 1656 | glad_glUniform1ui = (PFNGLUNIFORM1UIPROC)load("glUniform1ui"); 1657 | glad_glUniform2ui = (PFNGLUNIFORM2UIPROC)load("glUniform2ui"); 1658 | glad_glUniform3ui = (PFNGLUNIFORM3UIPROC)load("glUniform3ui"); 1659 | glad_glUniform4ui = (PFNGLUNIFORM4UIPROC)load("glUniform4ui"); 1660 | glad_glUniform1uiv = (PFNGLUNIFORM1UIVPROC)load("glUniform1uiv"); 1661 | glad_glUniform2uiv = (PFNGLUNIFORM2UIVPROC)load("glUniform2uiv"); 1662 | glad_glUniform3uiv = (PFNGLUNIFORM3UIVPROC)load("glUniform3uiv"); 1663 | glad_glUniform4uiv = (PFNGLUNIFORM4UIVPROC)load("glUniform4uiv"); 1664 | glad_glTexParameterIiv = (PFNGLTEXPARAMETERIIVPROC)load("glTexParameterIiv"); 1665 | glad_glTexParameterIuiv = (PFNGLTEXPARAMETERIUIVPROC)load("glTexParameterIuiv"); 1666 | glad_glGetTexParameterIiv = (PFNGLGETTEXPARAMETERIIVPROC)load("glGetTexParameterIiv"); 1667 | glad_glGetTexParameterIuiv = (PFNGLGETTEXPARAMETERIUIVPROC)load("glGetTexParameterIuiv"); 1668 | glad_glClearBufferiv = (PFNGLCLEARBUFFERIVPROC)load("glClearBufferiv"); 1669 | glad_glClearBufferuiv = (PFNGLCLEARBUFFERUIVPROC)load("glClearBufferuiv"); 1670 | glad_glClearBufferfv = (PFNGLCLEARBUFFERFVPROC)load("glClearBufferfv"); 1671 | glad_glClearBufferfi = (PFNGLCLEARBUFFERFIPROC)load("glClearBufferfi"); 1672 | glad_glGetStringi = (PFNGLGETSTRINGIPROC)load("glGetStringi"); 1673 | glad_glIsRenderbuffer = (PFNGLISRENDERBUFFERPROC)load("glIsRenderbuffer"); 1674 | glad_glBindRenderbuffer = (PFNGLBINDRENDERBUFFERPROC)load("glBindRenderbuffer"); 1675 | glad_glDeleteRenderbuffers = (PFNGLDELETERENDERBUFFERSPROC)load("glDeleteRenderbuffers"); 1676 | glad_glGenRenderbuffers = (PFNGLGENRENDERBUFFERSPROC)load("glGenRenderbuffers"); 1677 | glad_glRenderbufferStorage = (PFNGLRENDERBUFFERSTORAGEPROC)load("glRenderbufferStorage"); 1678 | glad_glGetRenderbufferParameteriv = (PFNGLGETRENDERBUFFERPARAMETERIVPROC)load("glGetRenderbufferParameteriv"); 1679 | glad_glIsFramebuffer = (PFNGLISFRAMEBUFFERPROC)load("glIsFramebuffer"); 1680 | glad_glBindFramebuffer = (PFNGLBINDFRAMEBUFFERPROC)load("glBindFramebuffer"); 1681 | glad_glDeleteFramebuffers = (PFNGLDELETEFRAMEBUFFERSPROC)load("glDeleteFramebuffers"); 1682 | glad_glGenFramebuffers = (PFNGLGENFRAMEBUFFERSPROC)load("glGenFramebuffers"); 1683 | glad_glCheckFramebufferStatus = (PFNGLCHECKFRAMEBUFFERSTATUSPROC)load("glCheckFramebufferStatus"); 1684 | glad_glFramebufferTexture1D = (PFNGLFRAMEBUFFERTEXTURE1DPROC)load("glFramebufferTexture1D"); 1685 | glad_glFramebufferTexture2D = (PFNGLFRAMEBUFFERTEXTURE2DPROC)load("glFramebufferTexture2D"); 1686 | glad_glFramebufferTexture3D = (PFNGLFRAMEBUFFERTEXTURE3DPROC)load("glFramebufferTexture3D"); 1687 | glad_glFramebufferRenderbuffer = (PFNGLFRAMEBUFFERRENDERBUFFERPROC)load("glFramebufferRenderbuffer"); 1688 | glad_glGetFramebufferAttachmentParameteriv = (PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC)load("glGetFramebufferAttachmentParameteriv"); 1689 | glad_glGenerateMipmap = (PFNGLGENERATEMIPMAPPROC)load("glGenerateMipmap"); 1690 | glad_glBlitFramebuffer = (PFNGLBLITFRAMEBUFFERPROC)load("glBlitFramebuffer"); 1691 | glad_glRenderbufferStorageMultisample = (PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC)load("glRenderbufferStorageMultisample"); 1692 | glad_glFramebufferTextureLayer = (PFNGLFRAMEBUFFERTEXTURELAYERPROC)load("glFramebufferTextureLayer"); 1693 | glad_glMapBufferRange = (PFNGLMAPBUFFERRANGEPROC)load("glMapBufferRange"); 1694 | glad_glFlushMappedBufferRange = (PFNGLFLUSHMAPPEDBUFFERRANGEPROC)load("glFlushMappedBufferRange"); 1695 | glad_glBindVertexArray = (PFNGLBINDVERTEXARRAYPROC)load("glBindVertexArray"); 1696 | glad_glDeleteVertexArrays = (PFNGLDELETEVERTEXARRAYSPROC)load("glDeleteVertexArrays"); 1697 | glad_glGenVertexArrays = (PFNGLGENVERTEXARRAYSPROC)load("glGenVertexArrays"); 1698 | glad_glIsVertexArray = (PFNGLISVERTEXARRAYPROC)load("glIsVertexArray"); 1699 | } 1700 | static void load_GL_VERSION_3_1(GLADloadproc load) { 1701 | if(!GLAD_GL_VERSION_3_1) return; 1702 | glad_glDrawArraysInstanced = (PFNGLDRAWARRAYSINSTANCEDPROC)load("glDrawArraysInstanced"); 1703 | glad_glDrawElementsInstanced = (PFNGLDRAWELEMENTSINSTANCEDPROC)load("glDrawElementsInstanced"); 1704 | glad_glTexBuffer = (PFNGLTEXBUFFERPROC)load("glTexBuffer"); 1705 | glad_glPrimitiveRestartIndex = (PFNGLPRIMITIVERESTARTINDEXPROC)load("glPrimitiveRestartIndex"); 1706 | glad_glCopyBufferSubData = (PFNGLCOPYBUFFERSUBDATAPROC)load("glCopyBufferSubData"); 1707 | glad_glGetUniformIndices = (PFNGLGETUNIFORMINDICESPROC)load("glGetUniformIndices"); 1708 | glad_glGetActiveUniformsiv = (PFNGLGETACTIVEUNIFORMSIVPROC)load("glGetActiveUniformsiv"); 1709 | glad_glGetActiveUniformName = (PFNGLGETACTIVEUNIFORMNAMEPROC)load("glGetActiveUniformName"); 1710 | glad_glGetUniformBlockIndex = (PFNGLGETUNIFORMBLOCKINDEXPROC)load("glGetUniformBlockIndex"); 1711 | glad_glGetActiveUniformBlockiv = (PFNGLGETACTIVEUNIFORMBLOCKIVPROC)load("glGetActiveUniformBlockiv"); 1712 | glad_glGetActiveUniformBlockName = (PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC)load("glGetActiveUniformBlockName"); 1713 | glad_glUniformBlockBinding = (PFNGLUNIFORMBLOCKBINDINGPROC)load("glUniformBlockBinding"); 1714 | glad_glBindBufferRange = (PFNGLBINDBUFFERRANGEPROC)load("glBindBufferRange"); 1715 | glad_glBindBufferBase = (PFNGLBINDBUFFERBASEPROC)load("glBindBufferBase"); 1716 | glad_glGetIntegeri_v = (PFNGLGETINTEGERI_VPROC)load("glGetIntegeri_v"); 1717 | } 1718 | static void load_GL_VERSION_3_2(GLADloadproc load) { 1719 | if(!GLAD_GL_VERSION_3_2) return; 1720 | glad_glDrawElementsBaseVertex = (PFNGLDRAWELEMENTSBASEVERTEXPROC)load("glDrawElementsBaseVertex"); 1721 | glad_glDrawRangeElementsBaseVertex = (PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC)load("glDrawRangeElementsBaseVertex"); 1722 | glad_glDrawElementsInstancedBaseVertex = (PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC)load("glDrawElementsInstancedBaseVertex"); 1723 | glad_glMultiDrawElementsBaseVertex = (PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC)load("glMultiDrawElementsBaseVertex"); 1724 | glad_glProvokingVertex = (PFNGLPROVOKINGVERTEXPROC)load("glProvokingVertex"); 1725 | glad_glFenceSync = (PFNGLFENCESYNCPROC)load("glFenceSync"); 1726 | glad_glIsSync = (PFNGLISSYNCPROC)load("glIsSync"); 1727 | glad_glDeleteSync = (PFNGLDELETESYNCPROC)load("glDeleteSync"); 1728 | glad_glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC)load("glClientWaitSync"); 1729 | glad_glWaitSync = (PFNGLWAITSYNCPROC)load("glWaitSync"); 1730 | glad_glGetInteger64v = (PFNGLGETINTEGER64VPROC)load("glGetInteger64v"); 1731 | glad_glGetSynciv = (PFNGLGETSYNCIVPROC)load("glGetSynciv"); 1732 | glad_glGetInteger64i_v = (PFNGLGETINTEGER64I_VPROC)load("glGetInteger64i_v"); 1733 | glad_glGetBufferParameteri64v = (PFNGLGETBUFFERPARAMETERI64VPROC)load("glGetBufferParameteri64v"); 1734 | glad_glFramebufferTexture = (PFNGLFRAMEBUFFERTEXTUREPROC)load("glFramebufferTexture"); 1735 | glad_glTexImage2DMultisample = (PFNGLTEXIMAGE2DMULTISAMPLEPROC)load("glTexImage2DMultisample"); 1736 | glad_glTexImage3DMultisample = (PFNGLTEXIMAGE3DMULTISAMPLEPROC)load("glTexImage3DMultisample"); 1737 | glad_glGetMultisamplefv = (PFNGLGETMULTISAMPLEFVPROC)load("glGetMultisamplefv"); 1738 | glad_glSampleMaski = (PFNGLSAMPLEMASKIPROC)load("glSampleMaski"); 1739 | } 1740 | static void load_GL_VERSION_3_3(GLADloadproc load) { 1741 | if(!GLAD_GL_VERSION_3_3) return; 1742 | glad_glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)load("glBindFragDataLocationIndexed"); 1743 | glad_glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)load("glGetFragDataIndex"); 1744 | glad_glGenSamplers = (PFNGLGENSAMPLERSPROC)load("glGenSamplers"); 1745 | glad_glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)load("glDeleteSamplers"); 1746 | glad_glIsSampler = (PFNGLISSAMPLERPROC)load("glIsSampler"); 1747 | glad_glBindSampler = (PFNGLBINDSAMPLERPROC)load("glBindSampler"); 1748 | glad_glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)load("glSamplerParameteri"); 1749 | glad_glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)load("glSamplerParameteriv"); 1750 | glad_glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)load("glSamplerParameterf"); 1751 | glad_glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)load("glSamplerParameterfv"); 1752 | glad_glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)load("glSamplerParameterIiv"); 1753 | glad_glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)load("glSamplerParameterIuiv"); 1754 | glad_glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)load("glGetSamplerParameteriv"); 1755 | glad_glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)load("glGetSamplerParameterIiv"); 1756 | glad_glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)load("glGetSamplerParameterfv"); 1757 | glad_glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)load("glGetSamplerParameterIuiv"); 1758 | glad_glQueryCounter = (PFNGLQUERYCOUNTERPROC)load("glQueryCounter"); 1759 | glad_glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)load("glGetQueryObjecti64v"); 1760 | glad_glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)load("glGetQueryObjectui64v"); 1761 | glad_glVertexAttribDivisor = (PFNGLVERTEXATTRIBDIVISORPROC)load("glVertexAttribDivisor"); 1762 | glad_glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)load("glVertexAttribP1ui"); 1763 | glad_glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)load("glVertexAttribP1uiv"); 1764 | glad_glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)load("glVertexAttribP2ui"); 1765 | glad_glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)load("glVertexAttribP2uiv"); 1766 | glad_glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)load("glVertexAttribP3ui"); 1767 | glad_glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)load("glVertexAttribP3uiv"); 1768 | glad_glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)load("glVertexAttribP4ui"); 1769 | glad_glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)load("glVertexAttribP4uiv"); 1770 | glad_glVertexP2ui = (PFNGLVERTEXP2UIPROC)load("glVertexP2ui"); 1771 | glad_glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)load("glVertexP2uiv"); 1772 | glad_glVertexP3ui = (PFNGLVERTEXP3UIPROC)load("glVertexP3ui"); 1773 | glad_glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)load("glVertexP3uiv"); 1774 | glad_glVertexP4ui = (PFNGLVERTEXP4UIPROC)load("glVertexP4ui"); 1775 | glad_glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)load("glVertexP4uiv"); 1776 | glad_glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)load("glTexCoordP1ui"); 1777 | glad_glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)load("glTexCoordP1uiv"); 1778 | glad_glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)load("glTexCoordP2ui"); 1779 | glad_glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)load("glTexCoordP2uiv"); 1780 | glad_glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)load("glTexCoordP3ui"); 1781 | glad_glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)load("glTexCoordP3uiv"); 1782 | glad_glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)load("glTexCoordP4ui"); 1783 | glad_glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)load("glTexCoordP4uiv"); 1784 | glad_glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)load("glMultiTexCoordP1ui"); 1785 | glad_glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)load("glMultiTexCoordP1uiv"); 1786 | glad_glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)load("glMultiTexCoordP2ui"); 1787 | glad_glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)load("glMultiTexCoordP2uiv"); 1788 | glad_glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)load("glMultiTexCoordP3ui"); 1789 | glad_glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)load("glMultiTexCoordP3uiv"); 1790 | glad_glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)load("glMultiTexCoordP4ui"); 1791 | glad_glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)load("glMultiTexCoordP4uiv"); 1792 | glad_glNormalP3ui = (PFNGLNORMALP3UIPROC)load("glNormalP3ui"); 1793 | glad_glNormalP3uiv = (PFNGLNORMALP3UIVPROC)load("glNormalP3uiv"); 1794 | glad_glColorP3ui = (PFNGLCOLORP3UIPROC)load("glColorP3ui"); 1795 | glad_glColorP3uiv = (PFNGLCOLORP3UIVPROC)load("glColorP3uiv"); 1796 | glad_glColorP4ui = (PFNGLCOLORP4UIPROC)load("glColorP4ui"); 1797 | glad_glColorP4uiv = (PFNGLCOLORP4UIVPROC)load("glColorP4uiv"); 1798 | glad_glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)load("glSecondaryColorP3ui"); 1799 | glad_glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)load("glSecondaryColorP3uiv"); 1800 | } 1801 | static void load_GL_VERSION_4_0(GLADloadproc load) { 1802 | if(!GLAD_GL_VERSION_4_0) return; 1803 | glad_glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)load("glMinSampleShading"); 1804 | glad_glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)load("glBlendEquationi"); 1805 | glad_glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)load("glBlendEquationSeparatei"); 1806 | glad_glBlendFunci = (PFNGLBLENDFUNCIPROC)load("glBlendFunci"); 1807 | glad_glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)load("glBlendFuncSeparatei"); 1808 | glad_glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)load("glDrawArraysIndirect"); 1809 | glad_glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)load("glDrawElementsIndirect"); 1810 | glad_glUniform1d = (PFNGLUNIFORM1DPROC)load("glUniform1d"); 1811 | glad_glUniform2d = (PFNGLUNIFORM2DPROC)load("glUniform2d"); 1812 | glad_glUniform3d = (PFNGLUNIFORM3DPROC)load("glUniform3d"); 1813 | glad_glUniform4d = (PFNGLUNIFORM4DPROC)load("glUniform4d"); 1814 | glad_glUniform1dv = (PFNGLUNIFORM1DVPROC)load("glUniform1dv"); 1815 | glad_glUniform2dv = (PFNGLUNIFORM2DVPROC)load("glUniform2dv"); 1816 | glad_glUniform3dv = (PFNGLUNIFORM3DVPROC)load("glUniform3dv"); 1817 | glad_glUniform4dv = (PFNGLUNIFORM4DVPROC)load("glUniform4dv"); 1818 | glad_glUniformMatrix2dv = (PFNGLUNIFORMMATRIX2DVPROC)load("glUniformMatrix2dv"); 1819 | glad_glUniformMatrix3dv = (PFNGLUNIFORMMATRIX3DVPROC)load("glUniformMatrix3dv"); 1820 | glad_glUniformMatrix4dv = (PFNGLUNIFORMMATRIX4DVPROC)load("glUniformMatrix4dv"); 1821 | glad_glUniformMatrix2x3dv = (PFNGLUNIFORMMATRIX2X3DVPROC)load("glUniformMatrix2x3dv"); 1822 | glad_glUniformMatrix2x4dv = (PFNGLUNIFORMMATRIX2X4DVPROC)load("glUniformMatrix2x4dv"); 1823 | glad_glUniformMatrix3x2dv = (PFNGLUNIFORMMATRIX3X2DVPROC)load("glUniformMatrix3x2dv"); 1824 | glad_glUniformMatrix3x4dv = (PFNGLUNIFORMMATRIX3X4DVPROC)load("glUniformMatrix3x4dv"); 1825 | glad_glUniformMatrix4x2dv = (PFNGLUNIFORMMATRIX4X2DVPROC)load("glUniformMatrix4x2dv"); 1826 | glad_glUniformMatrix4x3dv = (PFNGLUNIFORMMATRIX4X3DVPROC)load("glUniformMatrix4x3dv"); 1827 | glad_glGetUniformdv = (PFNGLGETUNIFORMDVPROC)load("glGetUniformdv"); 1828 | glad_glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)load("glGetSubroutineUniformLocation"); 1829 | glad_glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)load("glGetSubroutineIndex"); 1830 | glad_glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)load("glGetActiveSubroutineUniformiv"); 1831 | glad_glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)load("glGetActiveSubroutineUniformName"); 1832 | glad_glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)load("glGetActiveSubroutineName"); 1833 | glad_glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)load("glUniformSubroutinesuiv"); 1834 | glad_glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)load("glGetUniformSubroutineuiv"); 1835 | glad_glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)load("glGetProgramStageiv"); 1836 | glad_glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)load("glPatchParameteri"); 1837 | glad_glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)load("glPatchParameterfv"); 1838 | glad_glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)load("glBindTransformFeedback"); 1839 | glad_glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)load("glDeleteTransformFeedbacks"); 1840 | glad_glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)load("glGenTransformFeedbacks"); 1841 | glad_glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)load("glIsTransformFeedback"); 1842 | glad_glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)load("glPauseTransformFeedback"); 1843 | glad_glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)load("glResumeTransformFeedback"); 1844 | glad_glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)load("glDrawTransformFeedback"); 1845 | glad_glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)load("glDrawTransformFeedbackStream"); 1846 | glad_glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)load("glBeginQueryIndexed"); 1847 | glad_glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)load("glEndQueryIndexed"); 1848 | glad_glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)load("glGetQueryIndexediv"); 1849 | } 1850 | static int find_extensionsGL(void) { 1851 | if (!get_exts()) return 0; 1852 | (void)&has_ext; 1853 | free_exts(); 1854 | return 1; 1855 | } 1856 | 1857 | static void find_coreGL(void) { 1858 | 1859 | /* Thank you @elmindreda 1860 | * https://github.com/elmindreda/greg/blob/master/templates/greg.c.in#L176 1861 | * https://github.com/glfw/glfw/blob/master/src/context.c#L36 1862 | */ 1863 | int i, major, minor; 1864 | 1865 | const char* version; 1866 | const char* prefixes[] = { 1867 | "OpenGL ES-CM ", 1868 | "OpenGL ES-CL ", 1869 | "OpenGL ES ", 1870 | NULL 1871 | }; 1872 | 1873 | version = (const char*) glGetString(GL_VERSION); 1874 | if (!version) return; 1875 | 1876 | for (i = 0; prefixes[i]; i++) { 1877 | const size_t length = strlen(prefixes[i]); 1878 | if (strncmp(version, prefixes[i], length) == 0) { 1879 | version += length; 1880 | break; 1881 | } 1882 | } 1883 | 1884 | /* PR #18 */ 1885 | #ifdef _MSC_VER 1886 | sscanf_s(version, "%d.%d", &major, &minor); 1887 | #else 1888 | sscanf(version, "%d.%d", &major, &minor); 1889 | #endif 1890 | 1891 | GLVersion.major = major; GLVersion.minor = minor; 1892 | max_loaded_major = major; max_loaded_minor = minor; 1893 | GLAD_GL_VERSION_1_0 = (major == 1 && minor >= 0) || major > 1; 1894 | GLAD_GL_VERSION_1_1 = (major == 1 && minor >= 1) || major > 1; 1895 | GLAD_GL_VERSION_1_2 = (major == 1 && minor >= 2) || major > 1; 1896 | GLAD_GL_VERSION_1_3 = (major == 1 && minor >= 3) || major > 1; 1897 | GLAD_GL_VERSION_1_4 = (major == 1 && minor >= 4) || major > 1; 1898 | GLAD_GL_VERSION_1_5 = (major == 1 && minor >= 5) || major > 1; 1899 | GLAD_GL_VERSION_2_0 = (major == 2 && minor >= 0) || major > 2; 1900 | GLAD_GL_VERSION_2_1 = (major == 2 && minor >= 1) || major > 2; 1901 | GLAD_GL_VERSION_3_0 = (major == 3 && minor >= 0) || major > 3; 1902 | GLAD_GL_VERSION_3_1 = (major == 3 && minor >= 1) || major > 3; 1903 | GLAD_GL_VERSION_3_2 = (major == 3 && minor >= 2) || major > 3; 1904 | GLAD_GL_VERSION_3_3 = (major == 3 && minor >= 3) || major > 3; 1905 | GLAD_GL_VERSION_4_0 = (major == 4 && minor >= 0) || major > 4; 1906 | if (GLVersion.major > 4 || (GLVersion.major >= 4 && GLVersion.minor >= 0)) { 1907 | max_loaded_major = 4; 1908 | max_loaded_minor = 0; 1909 | } 1910 | } 1911 | 1912 | int gladLoadGLLoader(GLADloadproc load) { 1913 | GLVersion.major = 0; GLVersion.minor = 0; 1914 | glGetString = (PFNGLGETSTRINGPROC)load("glGetString"); 1915 | if(glGetString == NULL) return 0; 1916 | if(glGetString(GL_VERSION) == NULL) return 0; 1917 | find_coreGL(); 1918 | load_GL_VERSION_1_0(load); 1919 | load_GL_VERSION_1_1(load); 1920 | load_GL_VERSION_1_2(load); 1921 | load_GL_VERSION_1_3(load); 1922 | load_GL_VERSION_1_4(load); 1923 | load_GL_VERSION_1_5(load); 1924 | load_GL_VERSION_2_0(load); 1925 | load_GL_VERSION_2_1(load); 1926 | load_GL_VERSION_3_0(load); 1927 | load_GL_VERSION_3_1(load); 1928 | load_GL_VERSION_3_2(load); 1929 | load_GL_VERSION_3_3(load); 1930 | load_GL_VERSION_4_0(load); 1931 | 1932 | if (!find_extensionsGL()) return 0; 1933 | return GLVersion.major != 0 || GLVersion.minor != 0; 1934 | } 1935 | 1936 | --------------------------------------------------------------------------------