mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-04 07:01:04 +01:00 
			
		
		
		
	Backends: OpenGL3: Embed our own minimal GL loader based on gl3w and use it in SDL/GLFW examples. (#4445)
Loader repository at https://github.com/dearimgui/gl3w_stripped Removed support for using custom loaders in examples/opengl3 backend
This commit is contained in:
		@@ -111,33 +111,14 @@
 | 
				
			|||||||
#else
 | 
					#else
 | 
				
			||||||
// About Desktop OpenGL function loaders:
 | 
					// About Desktop OpenGL function loaders:
 | 
				
			||||||
//  Modern desktop OpenGL doesn't have a standard portable header file to load OpenGL function pointers.
 | 
					//  Modern desktop OpenGL doesn't have a standard portable header file to load OpenGL function pointers.
 | 
				
			||||||
//  Helper libraries are often used for this purpose! Here we are supporting a few common ones (gl3w, glew, glad).
 | 
					//  Helper libraries are often used for this purpose! Here we are using our own minimal custom loader based on gl3w.
 | 
				
			||||||
//  You may use another loader/header of your choice (glext, glLoadGen, etc.), or chose to manually implement your own.
 | 
					//  You may use another loader/header of your choice (glext, glLoadGen, etc.), or chose to manually implement your own.
 | 
				
			||||||
#if defined(IMGUI_IMPL_OPENGL_LOADER_GL3W)
 | 
					//  If you happen to be developing a new feature for this backend, you may want to get a unstripped version of
 | 
				
			||||||
#include <GL/gl3w.h>            // Needs to be initialized with gl3wInit() in user's code
 | 
					//  imgui_impl_opengl3_loader.h from https://github.com/dearimgui/gl3w_stripped/releases/ and use that temporarily.
 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLEW)
 | 
					//  When done, changes using new APIs should be accompanied by regenerated stripped loader version (instructions in
 | 
				
			||||||
#include <GL/glew.h>            // Needs to be initialized with glewInit() in user's code.
 | 
					//  gl3w_stripped README.rst).
 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD)
 | 
					#define IMGL3W_IMPL 1
 | 
				
			||||||
#include <glad/glad.h>          // Needs to be initialized with gladLoadGL() in user's code.
 | 
					#include "imgui_impl_opengl3_loader.h"
 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD2)
 | 
					 | 
				
			||||||
#include <glad/gl.h>            // Needs to be initialized with gladLoadGL(...) or gladLoaderLoadGL() in user's code.
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING2)
 | 
					 | 
				
			||||||
#ifndef GLFW_INCLUDE_NONE
 | 
					 | 
				
			||||||
#define GLFW_INCLUDE_NONE       // GLFW including OpenGL headers causes ambiguity or multiple definition errors.
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#include <glbinding/Binding.h>  // Needs to be initialized with glbinding::Binding::initialize() in user's code.
 | 
					 | 
				
			||||||
#include <glbinding/gl/gl.h>
 | 
					 | 
				
			||||||
using namespace gl;
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING3)
 | 
					 | 
				
			||||||
#ifndef GLFW_INCLUDE_NONE
 | 
					 | 
				
			||||||
#define GLFW_INCLUDE_NONE       // GLFW including OpenGL headers causes ambiguity or multiple definition errors.
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#include <glbinding/glbinding.h>// Needs to be initialized with glbinding::initialize() in user's code.
 | 
					 | 
				
			||||||
#include <glbinding/gl/gl.h>
 | 
					 | 
				
			||||||
using namespace gl;
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#include IMGUI_IMPL_OPENGL_LOADER_CUSTOM
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Vertex arrays are not supported on ES2/WebGL1 unless Emscripten which uses an extension
 | 
					// Vertex arrays are not supported on ES2/WebGL1 unless Emscripten which uses an extension
 | 
				
			||||||
@@ -207,6 +188,14 @@ bool    ImGui_ImplOpenGL3_Init(const char* glsl_version)
 | 
				
			|||||||
    ImGuiIO& io = ImGui::GetIO();
 | 
					    ImGuiIO& io = ImGui::GetIO();
 | 
				
			||||||
    IM_ASSERT(io.BackendRendererUserData == NULL && "Already initialized a renderer backend!");
 | 
					    IM_ASSERT(io.BackendRendererUserData == NULL && "Already initialized a renderer backend!");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if !defined(IMGUI_IMPL_OPENGL_ES2) && !defined(IMGUI_IMPL_OPENGL_ES3)
 | 
				
			||||||
 | 
					    if (imgl3wInit() != 0)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        fprintf(stderr, "Failed to initialize OpenGL loader!\n");
 | 
				
			||||||
 | 
					        return false;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Setup backend capabilities flags
 | 
					    // Setup backend capabilities flags
 | 
				
			||||||
    ImGui_ImplOpenGL3_Data* bd = IM_NEW(ImGui_ImplOpenGL3_Data)();;
 | 
					    ImGui_ImplOpenGL3_Data* bd = IM_NEW(ImGui_ImplOpenGL3_Data)();;
 | 
				
			||||||
    io.BackendRendererUserData = (void*)bd;
 | 
					    io.BackendRendererUserData = (void*)bd;
 | 
				
			||||||
@@ -252,37 +241,6 @@ bool    ImGui_ImplOpenGL3_Init(const char* glsl_version)
 | 
				
			|||||||
    strcpy(bd->GlslVersionString, glsl_version);
 | 
					    strcpy(bd->GlslVersionString, glsl_version);
 | 
				
			||||||
    strcat(bd->GlslVersionString, "\n");
 | 
					    strcat(bd->GlslVersionString, "\n");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Debugging construct to make it easily visible in the IDE and debugger which GL loader has been selected.
 | 
					 | 
				
			||||||
    // The code actually never uses the 'gl_loader' variable! It is only here so you can read it!
 | 
					 | 
				
			||||||
    // If auto-detection fails or doesn't select the same GL loader file as used by your application,
 | 
					 | 
				
			||||||
    // you are likely to get a crash below.
 | 
					 | 
				
			||||||
    // You can explicitly select a loader by using '#define IMGUI_IMPL_OPENGL_LOADER_XXX' in imconfig.h or compiler command-line.
 | 
					 | 
				
			||||||
    const char* gl_loader = "Unknown";
 | 
					 | 
				
			||||||
    IM_UNUSED(gl_loader);
 | 
					 | 
				
			||||||
#if defined(IMGUI_IMPL_OPENGL_LOADER_GL3W)
 | 
					 | 
				
			||||||
    gl_loader = "GL3W";
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLEW)
 | 
					 | 
				
			||||||
    gl_loader = "GLEW";
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD)
 | 
					 | 
				
			||||||
    gl_loader = "GLAD";
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD2)
 | 
					 | 
				
			||||||
    gl_loader = "GLAD2";
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING2)
 | 
					 | 
				
			||||||
    gl_loader = "glbinding2";
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING3)
 | 
					 | 
				
			||||||
    gl_loader = "glbinding3";
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_CUSTOM)
 | 
					 | 
				
			||||||
    gl_loader = "custom";
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    gl_loader = "none";
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Make an arbitrary GL call (we don't actually need the result)
 | 
					 | 
				
			||||||
    // IF YOU GET A CRASH HERE: it probably means that you haven't initialized the OpenGL function loader used by this code.
 | 
					 | 
				
			||||||
    // Desktop OpenGL 3/4 need a function loader. See the IMGUI_IMPL_OPENGL_LOADER_xxx explanation above.
 | 
					 | 
				
			||||||
    GLint current_texture;
 | 
					 | 
				
			||||||
    glGetIntegerv(GL_TEXTURE_BINDING_2D, ¤t_texture);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Detect extensions we support
 | 
					    // Detect extensions we support
 | 
				
			||||||
    bd->HasClipOrigin = (bd->GlVersion >= 450);
 | 
					    bd->HasClipOrigin = (bd->GlVersion >= 450);
 | 
				
			||||||
#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_EXTENSIONS
 | 
					#ifdef IMGUI_IMPL_OPENGL_MAY_HAVE_EXTENSIONS
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -41,19 +41,9 @@ IMGUI_IMPL_API void     ImGui_ImplOpenGL3_DestroyDeviceObjects();
 | 
				
			|||||||
//#define IMGUI_IMPL_OPENGL_ES2     // Auto-detected on Emscripten
 | 
					//#define IMGUI_IMPL_OPENGL_ES2     // Auto-detected on Emscripten
 | 
				
			||||||
//#define IMGUI_IMPL_OPENGL_ES3     // Auto-detected on iOS/Android
 | 
					//#define IMGUI_IMPL_OPENGL_ES3     // Auto-detected on iOS/Android
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Attempt to auto-detect the default Desktop GL loader based on available header files.
 | 
					// You can explicitly select GLES2 or GLES3 API by using one of the '#define IMGUI_IMPL_OPENGL_LOADER_XXX' in imconfig.h or compiler command-line.
 | 
				
			||||||
// If auto-detection fails or doesn't select the same GL loader file as used by your application,
 | 
					 | 
				
			||||||
// you are likely to get a crash in ImGui_ImplOpenGL3_Init().
 | 
					 | 
				
			||||||
// You can explicitly select a loader by using one of the '#define IMGUI_IMPL_OPENGL_LOADER_XXX' in imconfig.h or compiler command-line.
 | 
					 | 
				
			||||||
#if !defined(IMGUI_IMPL_OPENGL_ES2) \
 | 
					#if !defined(IMGUI_IMPL_OPENGL_ES2) \
 | 
				
			||||||
 && !defined(IMGUI_IMPL_OPENGL_ES3) \
 | 
					 && !defined(IMGUI_IMPL_OPENGL_ES3)
 | 
				
			||||||
 && !defined(IMGUI_IMPL_OPENGL_LOADER_GL3W) \
 | 
					 | 
				
			||||||
 && !defined(IMGUI_IMPL_OPENGL_LOADER_GLEW) \
 | 
					 | 
				
			||||||
 && !defined(IMGUI_IMPL_OPENGL_LOADER_GLAD) \
 | 
					 | 
				
			||||||
 && !defined(IMGUI_IMPL_OPENGL_LOADER_GLAD2) \
 | 
					 | 
				
			||||||
 && !defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING2) \
 | 
					 | 
				
			||||||
 && !defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING3) \
 | 
					 | 
				
			||||||
 && !defined(IMGUI_IMPL_OPENGL_LOADER_CUSTOM)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Try to detect GLES on matching platforms
 | 
					// Try to detect GLES on matching platforms
 | 
				
			||||||
#if defined(__APPLE__)
 | 
					#if defined(__APPLE__)
 | 
				
			||||||
@@ -63,26 +53,8 @@ IMGUI_IMPL_API void     ImGui_ImplOpenGL3_DestroyDeviceObjects();
 | 
				
			|||||||
#define IMGUI_IMPL_OPENGL_ES3               // iOS, Android  -> GL ES 3, "#version 300 es"
 | 
					#define IMGUI_IMPL_OPENGL_ES3               // iOS, Android  -> GL ES 3, "#version 300 es"
 | 
				
			||||||
#elif defined(__EMSCRIPTEN__)
 | 
					#elif defined(__EMSCRIPTEN__)
 | 
				
			||||||
#define IMGUI_IMPL_OPENGL_ES2               // Emscripten    -> GL ES 2, "#version 100"
 | 
					#define IMGUI_IMPL_OPENGL_ES2               // Emscripten    -> GL ES 2, "#version 100"
 | 
				
			||||||
 | 
					 | 
				
			||||||
// Otherwise try to detect supported Desktop OpenGL loaders..
 | 
					 | 
				
			||||||
#elif defined(__has_include)
 | 
					 | 
				
			||||||
#if __has_include(<GL/glew.h>)
 | 
					 | 
				
			||||||
    #define IMGUI_IMPL_OPENGL_LOADER_GLEW
 | 
					 | 
				
			||||||
#elif __has_include(<glad/glad.h>)
 | 
					 | 
				
			||||||
    #define IMGUI_IMPL_OPENGL_LOADER_GLAD
 | 
					 | 
				
			||||||
#elif __has_include(<glad/gl.h>)
 | 
					 | 
				
			||||||
    #define IMGUI_IMPL_OPENGL_LOADER_GLAD2
 | 
					 | 
				
			||||||
#elif __has_include(<GL/gl3w.h>)
 | 
					 | 
				
			||||||
    #define IMGUI_IMPL_OPENGL_LOADER_GL3W
 | 
					 | 
				
			||||||
#elif __has_include(<glbinding/glbinding.h>)
 | 
					 | 
				
			||||||
    #define IMGUI_IMPL_OPENGL_LOADER_GLBINDING3
 | 
					 | 
				
			||||||
#elif __has_include(<glbinding/Binding.h>)
 | 
					 | 
				
			||||||
    #define IMGUI_IMPL_OPENGL_LOADER_GLBINDING2
 | 
					 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    #error "Cannot detect OpenGL loader!"
 | 
					// Otherwise imgui_impl_opengl3_loader.h will be used.
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    #define IMGUI_IMPL_OPENGL_LOADER_GL3W   // Default to GL3W embedded in our repository
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										729
									
								
								backends/imgui_impl_opengl3_loader.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										729
									
								
								backends/imgui_impl_opengl3_loader.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,729 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * This file was generated with gl3w_gen.py, part of imgl3w
 | 
				
			||||||
 | 
					 * (hosted at https://github.com/dearimgui/gl3w_stripped)
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * This is free and unencumbered software released into the public domain.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * Anyone is free to copy, modify, publish, use, compile, sell, or
 | 
				
			||||||
 | 
					 * distribute this software, either in source code form or as a compiled
 | 
				
			||||||
 | 
					 * binary, for any purpose, commercial or non-commercial, and by any
 | 
				
			||||||
 | 
					 * means.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * In jurisdictions that recognize copyright laws, the author or authors
 | 
				
			||||||
 | 
					 * of this software dedicate any and all copyright interest in the
 | 
				
			||||||
 | 
					 * software to the public domain. We make this dedication for the benefit
 | 
				
			||||||
 | 
					 * of the public at large and to the detriment of our heirs and
 | 
				
			||||||
 | 
					 * successors. We intend this dedication to be an overt act of
 | 
				
			||||||
 | 
					 * relinquishment in perpetuity of all present and future rights to this
 | 
				
			||||||
 | 
					 * software under copyright law.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 | 
				
			||||||
 | 
					 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 | 
				
			||||||
 | 
					 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
 | 
				
			||||||
 | 
					 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
 | 
				
			||||||
 | 
					 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 | 
				
			||||||
 | 
					 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 | 
				
			||||||
 | 
					 * OTHER DEALINGS IN THE SOFTWARE.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					// We embed our own OpenGL loader to not require user to provide their own or to have to use ours, which proved to be endless problems for users.
 | 
				
			||||||
 | 
					// Our loader is custom-generated, based on gl3w but automatically filtered to only include enums/functions that we use in this source file.
 | 
				
			||||||
 | 
					// Regenerate with: python gl3w_gen.py --imgui-dir /path/to/imgui/
 | 
				
			||||||
 | 
					// see https://github.com/dearimgui/gl3w_stripped for more info.
 | 
				
			||||||
 | 
					#ifndef __gl3w_h_
 | 
				
			||||||
 | 
					#define __gl3w_h_
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Adapted from KHR/khrplatform.h to avoid including entire file.
 | 
				
			||||||
 | 
					typedef          float         khronos_float_t;
 | 
				
			||||||
 | 
					typedef signed   char          khronos_int8_t;
 | 
				
			||||||
 | 
					typedef unsigned char          khronos_uint8_t;
 | 
				
			||||||
 | 
					typedef signed   short int     khronos_int16_t;
 | 
				
			||||||
 | 
					typedef unsigned short int     khronos_uint16_t;
 | 
				
			||||||
 | 
					#ifdef _WIN64
 | 
				
			||||||
 | 
					typedef signed   long long int khronos_intptr_t;
 | 
				
			||||||
 | 
					typedef signed   long long int khronos_ssize_t;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					typedef signed   long  int     khronos_intptr_t;
 | 
				
			||||||
 | 
					typedef signed   long  int     khronos_ssize_t;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(_MSC_VER) && !defined(__clang__)
 | 
				
			||||||
 | 
					typedef signed   __int64       khronos_int64_t;
 | 
				
			||||||
 | 
					typedef unsigned __int64       khronos_uint64_t;
 | 
				
			||||||
 | 
					#elif (defined(__clang__) || defined(__GNUC__)) && (__cplusplus < 201100)
 | 
				
			||||||
 | 
					#include <stdint.h>
 | 
				
			||||||
 | 
					typedef          int64_t       khronos_int64_t;
 | 
				
			||||||
 | 
					typedef          uint64_t      khronos_uint64_t;
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					typedef signed   long long     khronos_int64_t;
 | 
				
			||||||
 | 
					typedef unsigned long long     khronos_uint64_t;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __gl_glcorearb_h_
 | 
				
			||||||
 | 
					#define __gl_glcorearb_h_ 1
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					** Copyright 2013-2020 The Khronos Group Inc.
 | 
				
			||||||
 | 
					** SPDX-License-Identifier: MIT
 | 
				
			||||||
 | 
					**
 | 
				
			||||||
 | 
					** This header is generated from the Khronos OpenGL / OpenGL ES XML
 | 
				
			||||||
 | 
					** API Registry. The current version of the Registry, generator scripts
 | 
				
			||||||
 | 
					** used to make the header, and the header can be found at
 | 
				
			||||||
 | 
					**   https://github.com/KhronosGroup/OpenGL-Registry
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
 | 
				
			||||||
 | 
					#ifndef WIN32_LEAN_AND_MEAN
 | 
				
			||||||
 | 
					#define WIN32_LEAN_AND_MEAN 1
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#include <windows.h>
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef APIENTRY
 | 
				
			||||||
 | 
					#define APIENTRY
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef APIENTRYP
 | 
				
			||||||
 | 
					#define APIENTRYP APIENTRY *
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#ifndef GLAPI
 | 
				
			||||||
 | 
					#define GLAPI extern
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					/* glcorearb.h is for use with OpenGL core profile implementations.
 | 
				
			||||||
 | 
					** It should should be placed in the same directory as gl.h and
 | 
				
			||||||
 | 
					** included as <GL/glcorearb.h>.
 | 
				
			||||||
 | 
					**
 | 
				
			||||||
 | 
					** glcorearb.h includes only APIs in the latest OpenGL core profile
 | 
				
			||||||
 | 
					** implementation together with APIs in newer ARB extensions which 
 | 
				
			||||||
 | 
					** can be supported by the core profile. It does not, and never will
 | 
				
			||||||
 | 
					** include functionality removed from the core profile, such as
 | 
				
			||||||
 | 
					** fixed-function vertex and fragment processing.
 | 
				
			||||||
 | 
					**
 | 
				
			||||||
 | 
					** Do not #include both <GL/glcorearb.h> and either of <GL/gl.h> or
 | 
				
			||||||
 | 
					** <GL/glext.h> in the same source file.
 | 
				
			||||||
 | 
					*/
 | 
				
			||||||
 | 
					/* Generated C header for:
 | 
				
			||||||
 | 
					 * API: gl
 | 
				
			||||||
 | 
					 * Profile: core
 | 
				
			||||||
 | 
					 * Versions considered: .*
 | 
				
			||||||
 | 
					 * Versions emitted: .*
 | 
				
			||||||
 | 
					 * Default extensions included: glcore
 | 
				
			||||||
 | 
					 * Additional extensions included: _nomatch_^
 | 
				
			||||||
 | 
					 * Extensions removed: _nomatch_^
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_1_0
 | 
				
			||||||
 | 
					typedef void GLvoid;
 | 
				
			||||||
 | 
					typedef unsigned int GLenum;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef khronos_float_t GLfloat;
 | 
				
			||||||
 | 
					typedef int GLint;
 | 
				
			||||||
 | 
					typedef int GLsizei;
 | 
				
			||||||
 | 
					typedef unsigned int GLbitfield;
 | 
				
			||||||
 | 
					typedef double GLdouble;
 | 
				
			||||||
 | 
					typedef unsigned int GLuint;
 | 
				
			||||||
 | 
					typedef unsigned char GLboolean;
 | 
				
			||||||
 | 
					typedef khronos_uint8_t GLubyte;
 | 
				
			||||||
 | 
					#define GL_COLOR_BUFFER_BIT               0x00004000
 | 
				
			||||||
 | 
					#define GL_FALSE                          0
 | 
				
			||||||
 | 
					#define GL_TRUE                           1
 | 
				
			||||||
 | 
					#define GL_TRIANGLES                      0x0004
 | 
				
			||||||
 | 
					#define GL_ONE                            1
 | 
				
			||||||
 | 
					#define GL_SRC_ALPHA                      0x0302
 | 
				
			||||||
 | 
					#define GL_ONE_MINUS_SRC_ALPHA            0x0303
 | 
				
			||||||
 | 
					#define GL_FRONT_AND_BACK                 0x0408
 | 
				
			||||||
 | 
					#define GL_POLYGON_MODE                   0x0B40
 | 
				
			||||||
 | 
					#define GL_CULL_FACE                      0x0B44
 | 
				
			||||||
 | 
					#define GL_DEPTH_TEST                     0x0B71
 | 
				
			||||||
 | 
					#define GL_STENCIL_TEST                   0x0B90
 | 
				
			||||||
 | 
					#define GL_VIEWPORT                       0x0BA2
 | 
				
			||||||
 | 
					#define GL_BLEND                          0x0BE2
 | 
				
			||||||
 | 
					#define GL_SCISSOR_BOX                    0x0C10
 | 
				
			||||||
 | 
					#define GL_SCISSOR_TEST                   0x0C11
 | 
				
			||||||
 | 
					#define GL_UNPACK_ROW_LENGTH              0x0CF2
 | 
				
			||||||
 | 
					#define GL_TEXTURE_2D                     0x0DE1
 | 
				
			||||||
 | 
					#define GL_UNSIGNED_BYTE                  0x1401
 | 
				
			||||||
 | 
					#define GL_UNSIGNED_SHORT                 0x1403
 | 
				
			||||||
 | 
					#define GL_UNSIGNED_INT                   0x1405
 | 
				
			||||||
 | 
					#define GL_FLOAT                          0x1406
 | 
				
			||||||
 | 
					#define GL_RGBA                           0x1908
 | 
				
			||||||
 | 
					#define GL_FILL                           0x1B02
 | 
				
			||||||
 | 
					#define GL_VERSION                        0x1F02
 | 
				
			||||||
 | 
					#define GL_EXTENSIONS                     0x1F03
 | 
				
			||||||
 | 
					#define GL_LINEAR                         0x2601
 | 
				
			||||||
 | 
					#define GL_TEXTURE_MAG_FILTER             0x2800
 | 
				
			||||||
 | 
					#define GL_TEXTURE_MIN_FILTER             0x2801
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLPOLYGONMODEPROC) (GLenum face, GLenum mode);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLCLEARPROC) (GLbitfield mask);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLDISABLEPROC) (GLenum cap);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLENABLEPROC) (GLenum cap);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data);
 | 
				
			||||||
 | 
					typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGPROC) (GLenum name);
 | 
				
			||||||
 | 
					typedef GLboolean (APIENTRYP PFNGLISENABLEDPROC) (GLenum cap);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height);
 | 
				
			||||||
 | 
					#ifdef GL_GLEXT_PROTOTYPES
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glPolygonMode (GLenum face, GLenum mode);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glClear (GLbitfield mask);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glDisable (GLenum cap);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glEnable (GLenum cap);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glPixelStorei (GLenum pname, GLint param);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glGetIntegerv (GLenum pname, GLint *data);
 | 
				
			||||||
 | 
					GLAPI const GLubyte *APIENTRY glGetString (GLenum name);
 | 
				
			||||||
 | 
					GLAPI GLboolean APIENTRY glIsEnabled (GLenum cap);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_1_0 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_1_1
 | 
				
			||||||
 | 
					typedef khronos_float_t GLclampf;
 | 
				
			||||||
 | 
					typedef double GLclampd;
 | 
				
			||||||
 | 
					#define GL_TEXTURE_BINDING_2D             0x8069
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures);
 | 
				
			||||||
 | 
					#ifdef GL_GLEXT_PROTOTYPES
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glBindTexture (GLenum target, GLuint texture);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glGenTextures (GLsizei n, GLuint *textures);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_1_1 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_1_3
 | 
				
			||||||
 | 
					#define GL_TEXTURE0                       0x84C0
 | 
				
			||||||
 | 
					#define GL_ACTIVE_TEXTURE                 0x84E0
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture);
 | 
				
			||||||
 | 
					#ifdef GL_GLEXT_PROTOTYPES
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glActiveTexture (GLenum texture);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_1_3 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_1_4
 | 
				
			||||||
 | 
					#define GL_BLEND_DST_RGB                  0x80C8
 | 
				
			||||||
 | 
					#define GL_BLEND_SRC_RGB                  0x80C9
 | 
				
			||||||
 | 
					#define GL_BLEND_DST_ALPHA                0x80CA
 | 
				
			||||||
 | 
					#define GL_BLEND_SRC_ALPHA                0x80CB
 | 
				
			||||||
 | 
					#define GL_FUNC_ADD                       0x8006
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode);
 | 
				
			||||||
 | 
					#ifdef GL_GLEXT_PROTOTYPES
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glBlendEquation (GLenum mode);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_1_4 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_1_5
 | 
				
			||||||
 | 
					typedef khronos_ssize_t GLsizeiptr;
 | 
				
			||||||
 | 
					typedef khronos_intptr_t GLintptr;
 | 
				
			||||||
 | 
					#define GL_ARRAY_BUFFER                   0x8892
 | 
				
			||||||
 | 
					#define GL_ELEMENT_ARRAY_BUFFER           0x8893
 | 
				
			||||||
 | 
					#define GL_ARRAY_BUFFER_BINDING           0x8894
 | 
				
			||||||
 | 
					#define GL_ELEMENT_ARRAY_BUFFER_BINDING   0x8895
 | 
				
			||||||
 | 
					#define GL_STREAM_DRAW                    0x88E0
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
 | 
				
			||||||
 | 
					#ifdef GL_GLEXT_PROTOTYPES
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glBindBuffer (GLenum target, GLuint buffer);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glGenBuffers (GLsizei n, GLuint *buffers);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_1_5 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_2_0
 | 
				
			||||||
 | 
					typedef char GLchar;
 | 
				
			||||||
 | 
					typedef khronos_int16_t GLshort;
 | 
				
			||||||
 | 
					typedef khronos_int8_t GLbyte;
 | 
				
			||||||
 | 
					typedef khronos_uint16_t GLushort;
 | 
				
			||||||
 | 
					#define GL_BLEND_EQUATION_RGB             0x8009
 | 
				
			||||||
 | 
					#define GL_BLEND_EQUATION_ALPHA           0x883D
 | 
				
			||||||
 | 
					#define GL_FRAGMENT_SHADER                0x8B30
 | 
				
			||||||
 | 
					#define GL_VERTEX_SHADER                  0x8B31
 | 
				
			||||||
 | 
					#define GL_COMPILE_STATUS                 0x8B81
 | 
				
			||||||
 | 
					#define GL_LINK_STATUS                    0x8B82
 | 
				
			||||||
 | 
					#define GL_INFO_LOG_LENGTH                0x8B84
 | 
				
			||||||
 | 
					#define GL_CURRENT_PROGRAM                0x8B8D
 | 
				
			||||||
 | 
					#define GL_UPPER_LEFT                     0x8CA2
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader);
 | 
				
			||||||
 | 
					typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void);
 | 
				
			||||||
 | 
					typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index);
 | 
				
			||||||
 | 
					typedef GLint (APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
 | 
				
			||||||
 | 
					typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
 | 
				
			||||||
 | 
					#ifdef GL_GLEXT_PROTOTYPES
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glAttachShader (GLuint program, GLuint shader);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glCompileShader (GLuint shader);
 | 
				
			||||||
 | 
					GLAPI GLuint APIENTRY glCreateProgram (void);
 | 
				
			||||||
 | 
					GLAPI GLuint APIENTRY glCreateShader (GLenum type);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glDeleteProgram (GLuint program);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glDeleteShader (GLuint shader);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glDetachShader (GLuint program, GLuint shader);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glEnableVertexAttribArray (GLuint index);
 | 
				
			||||||
 | 
					GLAPI GLint APIENTRY glGetAttribLocation (GLuint program, const GLchar *name);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog);
 | 
				
			||||||
 | 
					GLAPI GLint APIENTRY glGetUniformLocation (GLuint program, const GLchar *name);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glLinkProgram (GLuint program);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glUseProgram (GLuint program);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glUniform1i (GLint location, GLint v0);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_2_0 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_3_0
 | 
				
			||||||
 | 
					typedef khronos_uint16_t GLhalf;
 | 
				
			||||||
 | 
					#define GL_MAJOR_VERSION                  0x821B
 | 
				
			||||||
 | 
					#define GL_MINOR_VERSION                  0x821C
 | 
				
			||||||
 | 
					#define GL_NUM_EXTENSIONS                 0x821D
 | 
				
			||||||
 | 
					#define GL_VERTEX_ARRAY_BINDING           0x85B5
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETBOOLEANI_VPROC) (GLenum target, GLuint index, GLboolean *data);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETINTEGERI_VPROC) (GLenum target, GLuint index, GLint *data);
 | 
				
			||||||
 | 
					typedef const GLubyte *(APIENTRYP PFNGLGETSTRINGIPROC) (GLenum name, GLuint index);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLBINDVERTEXARRAYPROC) (GLuint array);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLDELETEVERTEXARRAYSPROC) (GLsizei n, const GLuint *arrays);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGENVERTEXARRAYSPROC) (GLsizei n, GLuint *arrays);
 | 
				
			||||||
 | 
					#ifdef GL_GLEXT_PROTOTYPES
 | 
				
			||||||
 | 
					GLAPI const GLubyte *APIENTRY glGetStringi (GLenum name, GLuint index);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glBindVertexArray (GLuint array);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glDeleteVertexArrays (GLsizei n, const GLuint *arrays);
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glGenVertexArrays (GLsizei n, GLuint *arrays);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_3_0 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_3_1
 | 
				
			||||||
 | 
					#define GL_VERSION_3_1 1
 | 
				
			||||||
 | 
					#define GL_PRIMITIVE_RESTART              0x8F9D
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_3_1 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_3_2
 | 
				
			||||||
 | 
					#define GL_VERSION_3_2 1
 | 
				
			||||||
 | 
					typedef struct __GLsync *GLsync;
 | 
				
			||||||
 | 
					typedef khronos_uint64_t GLuint64;
 | 
				
			||||||
 | 
					typedef khronos_int64_t GLint64;
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETINTEGER64I_VPROC) (GLenum target, GLuint index, GLint64 *data);
 | 
				
			||||||
 | 
					#ifdef GL_GLEXT_PROTOTYPES
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glDrawElementsBaseVertex (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_3_2 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_3_3
 | 
				
			||||||
 | 
					#define GL_VERSION_3_3 1
 | 
				
			||||||
 | 
					#define GL_SAMPLER_BINDING                0x8919
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
 | 
				
			||||||
 | 
					#ifdef GL_GLEXT_PROTOTYPES
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glBindSampler (GLuint unit, GLuint sampler);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_3_3 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_4_1
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETFLOATI_VPROC) (GLenum target, GLuint index, GLfloat *data);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETDOUBLEI_VPROC) (GLenum target, GLuint index, GLdouble *data);
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_4_1 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_4_3
 | 
				
			||||||
 | 
					typedef void (APIENTRY  *GLDEBUGPROC)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_4_3 */
 | 
				
			||||||
 | 
					#ifndef GL_VERSION_4_5
 | 
				
			||||||
 | 
					#define GL_CLIP_ORIGIN                    0x935C
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLCLIPCONTROLPROC) (GLenum origin, GLenum depth);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint *param);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETTRANSFORMFEEDBACKI64_VPROC) (GLuint xfb, GLenum pname, GLuint index, GLint64 *param);
 | 
				
			||||||
 | 
					#ifdef GL_GLEXT_PROTOTYPES
 | 
				
			||||||
 | 
					GLAPI void APIENTRY glClipControl (GLenum origin, GLenum depth);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif /* GL_VERSION_4_5 */
 | 
				
			||||||
 | 
					#ifndef GL_ARB_bindless_texture
 | 
				
			||||||
 | 
					typedef khronos_uint64_t GLuint64EXT;
 | 
				
			||||||
 | 
					#endif /* GL_ARB_bindless_texture */
 | 
				
			||||||
 | 
					#ifndef GL_ARB_cl_event
 | 
				
			||||||
 | 
					struct _cl_context;
 | 
				
			||||||
 | 
					struct _cl_event;
 | 
				
			||||||
 | 
					#endif /* GL_ARB_cl_event */
 | 
				
			||||||
 | 
					#ifndef GL_ARB_clip_control
 | 
				
			||||||
 | 
					#define GL_ARB_clip_control 1
 | 
				
			||||||
 | 
					#endif /* GL_ARB_clip_control */
 | 
				
			||||||
 | 
					#ifndef GL_ARB_debug_output
 | 
				
			||||||
 | 
					typedef void (APIENTRY  *GLDEBUGPROCARB)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam);
 | 
				
			||||||
 | 
					#endif /* GL_ARB_debug_output */
 | 
				
			||||||
 | 
					#ifndef GL_EXT_EGL_image_storage
 | 
				
			||||||
 | 
					typedef void *GLeglImageOES;
 | 
				
			||||||
 | 
					#endif /* GL_EXT_EGL_image_storage */
 | 
				
			||||||
 | 
					#ifndef GL_EXT_direct_state_access
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETFLOATI_VEXTPROC) (GLenum pname, GLuint index, GLfloat *params);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETDOUBLEI_VEXTPROC) (GLenum pname, GLuint index, GLdouble *params);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETPOINTERI_VEXTPROC) (GLenum pname, GLuint index, void **params);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETVERTEXARRAYINTEGERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, GLint *param);
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETVERTEXARRAYPOINTERI_VEXTPROC) (GLuint vaobj, GLuint index, GLenum pname, void **param);
 | 
				
			||||||
 | 
					#endif /* GL_EXT_direct_state_access */
 | 
				
			||||||
 | 
					#ifndef GL_NV_draw_vulkan_image
 | 
				
			||||||
 | 
					typedef void (APIENTRY  *GLVULKANPROCNV)(void);
 | 
				
			||||||
 | 
					#endif /* GL_NV_draw_vulkan_image */
 | 
				
			||||||
 | 
					#ifndef GL_NV_gpu_shader5
 | 
				
			||||||
 | 
					typedef khronos_int64_t GLint64EXT;
 | 
				
			||||||
 | 
					#endif /* GL_NV_gpu_shader5 */
 | 
				
			||||||
 | 
					#ifndef GL_NV_vertex_buffer_unified_memory
 | 
				
			||||||
 | 
					typedef void (APIENTRYP PFNGLGETINTEGERUI64I_VNVPROC) (GLenum value, GLuint index, GLuint64EXT *result);
 | 
				
			||||||
 | 
					#endif /* GL_NV_vertex_buffer_unified_memory */
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef GL3W_API
 | 
				
			||||||
 | 
					#define GL3W_API
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifndef __gl_h_
 | 
				
			||||||
 | 
					#define __gl_h_
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define GL3W_OK 0
 | 
				
			||||||
 | 
					#define GL3W_ERROR_INIT -1
 | 
				
			||||||
 | 
					#define GL3W_ERROR_LIBRARY_OPEN -2
 | 
				
			||||||
 | 
					#define GL3W_ERROR_OPENGL_VERSION -3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					typedef void (*GL3WglProc)(void);
 | 
				
			||||||
 | 
					typedef GL3WglProc (*GL3WGetProcAddressProc)(const char *proc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* gl3w api */
 | 
				
			||||||
 | 
					GL3W_API int imgl3wInit(void);
 | 
				
			||||||
 | 
					GL3W_API int imgl3wInit2(GL3WGetProcAddressProc proc);
 | 
				
			||||||
 | 
					GL3W_API int imgl3wIsSupported(int major, int minor);
 | 
				
			||||||
 | 
					GL3W_API GL3WglProc imgl3wGetProcAddress(const char *proc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* gl3w internal state */
 | 
				
			||||||
 | 
					union GL3WProcs {
 | 
				
			||||||
 | 
					    GL3WglProc ptr[52];
 | 
				
			||||||
 | 
					    struct {
 | 
				
			||||||
 | 
					        PFNGLACTIVETEXTUREPROC           ActiveTexture;
 | 
				
			||||||
 | 
					        PFNGLATTACHSHADERPROC            AttachShader;
 | 
				
			||||||
 | 
					        PFNGLBINDBUFFERPROC              BindBuffer;
 | 
				
			||||||
 | 
					        PFNGLBINDSAMPLERPROC             BindSampler;
 | 
				
			||||||
 | 
					        PFNGLBINDTEXTUREPROC             BindTexture;
 | 
				
			||||||
 | 
					        PFNGLBINDVERTEXARRAYPROC         BindVertexArray;
 | 
				
			||||||
 | 
					        PFNGLBLENDEQUATIONPROC           BlendEquation;
 | 
				
			||||||
 | 
					        PFNGLBLENDEQUATIONSEPARATEPROC   BlendEquationSeparate;
 | 
				
			||||||
 | 
					        PFNGLBLENDFUNCSEPARATEPROC       BlendFuncSeparate;
 | 
				
			||||||
 | 
					        PFNGLBUFFERDATAPROC              BufferData;
 | 
				
			||||||
 | 
					        PFNGLCLEARPROC                   Clear;
 | 
				
			||||||
 | 
					        PFNGLCLEARCOLORPROC              ClearColor;
 | 
				
			||||||
 | 
					        PFNGLCLIPCONTROLPROC             ClipControl;
 | 
				
			||||||
 | 
					        PFNGLCOMPILESHADERPROC           CompileShader;
 | 
				
			||||||
 | 
					        PFNGLCREATEPROGRAMPROC           CreateProgram;
 | 
				
			||||||
 | 
					        PFNGLCREATESHADERPROC            CreateShader;
 | 
				
			||||||
 | 
					        PFNGLDELETEBUFFERSPROC           DeleteBuffers;
 | 
				
			||||||
 | 
					        PFNGLDELETEPROGRAMPROC           DeleteProgram;
 | 
				
			||||||
 | 
					        PFNGLDELETESHADERPROC            DeleteShader;
 | 
				
			||||||
 | 
					        PFNGLDELETETEXTURESPROC          DeleteTextures;
 | 
				
			||||||
 | 
					        PFNGLDELETEVERTEXARRAYSPROC      DeleteVertexArrays;
 | 
				
			||||||
 | 
					        PFNGLDETACHSHADERPROC            DetachShader;
 | 
				
			||||||
 | 
					        PFNGLDISABLEPROC                 Disable;
 | 
				
			||||||
 | 
					        PFNGLDRAWELEMENTSPROC            DrawElements;
 | 
				
			||||||
 | 
					        PFNGLDRAWELEMENTSBASEVERTEXPROC  DrawElementsBaseVertex;
 | 
				
			||||||
 | 
					        PFNGLENABLEPROC                  Enable;
 | 
				
			||||||
 | 
					        PFNGLENABLEVERTEXATTRIBARRAYPROC EnableVertexAttribArray;
 | 
				
			||||||
 | 
					        PFNGLGENBUFFERSPROC              GenBuffers;
 | 
				
			||||||
 | 
					        PFNGLGENTEXTURESPROC             GenTextures;
 | 
				
			||||||
 | 
					        PFNGLGENVERTEXARRAYSPROC         GenVertexArrays;
 | 
				
			||||||
 | 
					        PFNGLGETATTRIBLOCATIONPROC       GetAttribLocation;
 | 
				
			||||||
 | 
					        PFNGLGETINTEGERVPROC             GetIntegerv;
 | 
				
			||||||
 | 
					        PFNGLGETPROGRAMINFOLOGPROC       GetProgramInfoLog;
 | 
				
			||||||
 | 
					        PFNGLGETPROGRAMIVPROC            GetProgramiv;
 | 
				
			||||||
 | 
					        PFNGLGETSHADERINFOLOGPROC        GetShaderInfoLog;
 | 
				
			||||||
 | 
					        PFNGLGETSHADERIVPROC             GetShaderiv;
 | 
				
			||||||
 | 
					        PFNGLGETSTRINGPROC               GetString;
 | 
				
			||||||
 | 
					        PFNGLGETSTRINGIPROC              GetStringi;
 | 
				
			||||||
 | 
					        PFNGLGETUNIFORMLOCATIONPROC      GetUniformLocation;
 | 
				
			||||||
 | 
					        PFNGLISENABLEDPROC               IsEnabled;
 | 
				
			||||||
 | 
					        PFNGLLINKPROGRAMPROC             LinkProgram;
 | 
				
			||||||
 | 
					        PFNGLPIXELSTOREIPROC             PixelStorei;
 | 
				
			||||||
 | 
					        PFNGLPOLYGONMODEPROC             PolygonMode;
 | 
				
			||||||
 | 
					        PFNGLSCISSORPROC                 Scissor;
 | 
				
			||||||
 | 
					        PFNGLSHADERSOURCEPROC            ShaderSource;
 | 
				
			||||||
 | 
					        PFNGLTEXIMAGE2DPROC              TexImage2D;
 | 
				
			||||||
 | 
					        PFNGLTEXPARAMETERIPROC           TexParameteri;
 | 
				
			||||||
 | 
					        PFNGLUNIFORM1IPROC               Uniform1i;
 | 
				
			||||||
 | 
					        PFNGLUNIFORMMATRIX4FVPROC        UniformMatrix4fv;
 | 
				
			||||||
 | 
					        PFNGLUSEPROGRAMPROC              UseProgram;
 | 
				
			||||||
 | 
					        PFNGLVERTEXATTRIBPOINTERPROC     VertexAttribPointer;
 | 
				
			||||||
 | 
					        PFNGLVIEWPORTPROC                Viewport;
 | 
				
			||||||
 | 
					    } gl;
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GL3W_API extern union GL3WProcs gl3wProcs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* OpenGL functions */
 | 
				
			||||||
 | 
					#define glActiveTexture                  gl3wProcs.gl.ActiveTexture
 | 
				
			||||||
 | 
					#define glAttachShader                   gl3wProcs.gl.AttachShader
 | 
				
			||||||
 | 
					#define glBindBuffer                     gl3wProcs.gl.BindBuffer
 | 
				
			||||||
 | 
					#define glBindSampler                    gl3wProcs.gl.BindSampler
 | 
				
			||||||
 | 
					#define glBindTexture                    gl3wProcs.gl.BindTexture
 | 
				
			||||||
 | 
					#define glBindVertexArray                gl3wProcs.gl.BindVertexArray
 | 
				
			||||||
 | 
					#define glBlendEquation                  gl3wProcs.gl.BlendEquation
 | 
				
			||||||
 | 
					#define glBlendEquationSeparate          gl3wProcs.gl.BlendEquationSeparate
 | 
				
			||||||
 | 
					#define glBlendFuncSeparate              gl3wProcs.gl.BlendFuncSeparate
 | 
				
			||||||
 | 
					#define glBufferData                     gl3wProcs.gl.BufferData
 | 
				
			||||||
 | 
					#define glClear                          gl3wProcs.gl.Clear
 | 
				
			||||||
 | 
					#define glClearColor                     gl3wProcs.gl.ClearColor
 | 
				
			||||||
 | 
					#define glClipControl                    gl3wProcs.gl.ClipControl
 | 
				
			||||||
 | 
					#define glCompileShader                  gl3wProcs.gl.CompileShader
 | 
				
			||||||
 | 
					#define glCreateProgram                  gl3wProcs.gl.CreateProgram
 | 
				
			||||||
 | 
					#define glCreateShader                   gl3wProcs.gl.CreateShader
 | 
				
			||||||
 | 
					#define glDeleteBuffers                  gl3wProcs.gl.DeleteBuffers
 | 
				
			||||||
 | 
					#define glDeleteProgram                  gl3wProcs.gl.DeleteProgram
 | 
				
			||||||
 | 
					#define glDeleteShader                   gl3wProcs.gl.DeleteShader
 | 
				
			||||||
 | 
					#define glDeleteTextures                 gl3wProcs.gl.DeleteTextures
 | 
				
			||||||
 | 
					#define glDeleteVertexArrays             gl3wProcs.gl.DeleteVertexArrays
 | 
				
			||||||
 | 
					#define glDetachShader                   gl3wProcs.gl.DetachShader
 | 
				
			||||||
 | 
					#define glDisable                        gl3wProcs.gl.Disable
 | 
				
			||||||
 | 
					#define glDrawElements                   gl3wProcs.gl.DrawElements
 | 
				
			||||||
 | 
					#define glDrawElementsBaseVertex         gl3wProcs.gl.DrawElementsBaseVertex
 | 
				
			||||||
 | 
					#define glEnable                         gl3wProcs.gl.Enable
 | 
				
			||||||
 | 
					#define glEnableVertexAttribArray        gl3wProcs.gl.EnableVertexAttribArray
 | 
				
			||||||
 | 
					#define glGenBuffers                     gl3wProcs.gl.GenBuffers
 | 
				
			||||||
 | 
					#define glGenTextures                    gl3wProcs.gl.GenTextures
 | 
				
			||||||
 | 
					#define glGenVertexArrays                gl3wProcs.gl.GenVertexArrays
 | 
				
			||||||
 | 
					#define glGetAttribLocation              gl3wProcs.gl.GetAttribLocation
 | 
				
			||||||
 | 
					#define glGetIntegerv                    gl3wProcs.gl.GetIntegerv
 | 
				
			||||||
 | 
					#define glGetProgramInfoLog              gl3wProcs.gl.GetProgramInfoLog
 | 
				
			||||||
 | 
					#define glGetProgramiv                   gl3wProcs.gl.GetProgramiv
 | 
				
			||||||
 | 
					#define glGetShaderInfoLog               gl3wProcs.gl.GetShaderInfoLog
 | 
				
			||||||
 | 
					#define glGetShaderiv                    gl3wProcs.gl.GetShaderiv
 | 
				
			||||||
 | 
					#define glGetString                      gl3wProcs.gl.GetString
 | 
				
			||||||
 | 
					#define glGetStringi                     gl3wProcs.gl.GetStringi
 | 
				
			||||||
 | 
					#define glGetUniformLocation             gl3wProcs.gl.GetUniformLocation
 | 
				
			||||||
 | 
					#define glIsEnabled                      gl3wProcs.gl.IsEnabled
 | 
				
			||||||
 | 
					#define glLinkProgram                    gl3wProcs.gl.LinkProgram
 | 
				
			||||||
 | 
					#define glPixelStorei                    gl3wProcs.gl.PixelStorei
 | 
				
			||||||
 | 
					#define glPolygonMode                    gl3wProcs.gl.PolygonMode
 | 
				
			||||||
 | 
					#define glScissor                        gl3wProcs.gl.Scissor
 | 
				
			||||||
 | 
					#define glShaderSource                   gl3wProcs.gl.ShaderSource
 | 
				
			||||||
 | 
					#define glTexImage2D                     gl3wProcs.gl.TexImage2D
 | 
				
			||||||
 | 
					#define glTexParameteri                  gl3wProcs.gl.TexParameteri
 | 
				
			||||||
 | 
					#define glUniform1i                      gl3wProcs.gl.Uniform1i
 | 
				
			||||||
 | 
					#define glUniformMatrix4fv               gl3wProcs.gl.UniformMatrix4fv
 | 
				
			||||||
 | 
					#define glUseProgram                     gl3wProcs.gl.UseProgram
 | 
				
			||||||
 | 
					#define glVertexAttribPointer            gl3wProcs.gl.VertexAttribPointer
 | 
				
			||||||
 | 
					#define glViewport                       gl3wProcs.gl.Viewport
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef IMGL3W_IMPL
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					extern "C" {
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <stdlib.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ARRAY_SIZE(x)  (sizeof(x) / sizeof((x)[0]))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#if defined(_WIN32)
 | 
				
			||||||
 | 
					#ifndef WIN32_LEAN_AND_MEAN
 | 
				
			||||||
 | 
					#define WIN32_LEAN_AND_MEAN 1
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#include <windows.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static HMODULE libgl;
 | 
				
			||||||
 | 
					typedef PROC(__stdcall* GL3WglGetProcAddr)(LPCSTR);
 | 
				
			||||||
 | 
					static GL3WglGetProcAddr wgl_get_proc_address;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int open_libgl(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    libgl = LoadLibraryA("opengl32.dll");
 | 
				
			||||||
 | 
					    if (!libgl)
 | 
				
			||||||
 | 
					        return GL3W_ERROR_LIBRARY_OPEN;
 | 
				
			||||||
 | 
					    wgl_get_proc_address = (GL3WglGetProcAddr)GetProcAddress(libgl, "wglGetProcAddress");
 | 
				
			||||||
 | 
					    return GL3W_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void close_libgl(void) { FreeLibrary(libgl); }
 | 
				
			||||||
 | 
					static GL3WglProc get_proc(const char *proc)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    GL3WglProc res;
 | 
				
			||||||
 | 
					    res = (GL3WglProc)wgl_get_proc_address(proc);
 | 
				
			||||||
 | 
					    if (!res)
 | 
				
			||||||
 | 
					        res = (GL3WglProc)GetProcAddress(libgl, proc);
 | 
				
			||||||
 | 
					    return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#elif defined(__APPLE__)
 | 
				
			||||||
 | 
					#include <dlfcn.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void *libgl;
 | 
				
			||||||
 | 
					static int open_libgl(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    libgl = dlopen("/System/Library/Frameworks/OpenGL.framework/OpenGL", RTLD_LAZY | RTLD_LOCAL);
 | 
				
			||||||
 | 
					    if (!libgl)
 | 
				
			||||||
 | 
					        return GL3W_ERROR_LIBRARY_OPEN;
 | 
				
			||||||
 | 
					    return GL3W_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void close_libgl(void) { dlclose(libgl); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static GL3WglProc get_proc(const char *proc)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    GL3WglProc res;
 | 
				
			||||||
 | 
					    *(void **)(&res) = dlsym(libgl, proc);
 | 
				
			||||||
 | 
					    return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#include <dlfcn.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void *libgl;
 | 
				
			||||||
 | 
					static GL3WglProc (*glx_get_proc_address)(const GLubyte *);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int open_libgl(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    libgl = dlopen("libGL.so.1", RTLD_LAZY | RTLD_LOCAL);
 | 
				
			||||||
 | 
					    if (!libgl)
 | 
				
			||||||
 | 
					        return GL3W_ERROR_LIBRARY_OPEN;
 | 
				
			||||||
 | 
					    *(void **)(&glx_get_proc_address) = dlsym(libgl, "glXGetProcAddressARB");
 | 
				
			||||||
 | 
					    return GL3W_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void close_libgl(void) { dlclose(libgl); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static GL3WglProc get_proc(const char *proc)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    GL3WglProc res;
 | 
				
			||||||
 | 
					    res = glx_get_proc_address((const GLubyte *)proc);
 | 
				
			||||||
 | 
					    if (!res)
 | 
				
			||||||
 | 
					        *(void **)(&res) = dlsym(libgl, proc);
 | 
				
			||||||
 | 
					    return res;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static struct { int major, minor; } version;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static int parse_version(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (!glGetIntegerv)
 | 
				
			||||||
 | 
					        return GL3W_ERROR_INIT;
 | 
				
			||||||
 | 
					    glGetIntegerv(GL_MAJOR_VERSION, &version.major);
 | 
				
			||||||
 | 
					    glGetIntegerv(GL_MINOR_VERSION, &version.minor);
 | 
				
			||||||
 | 
					    if (version.major < 3)
 | 
				
			||||||
 | 
					        return GL3W_ERROR_OPENGL_VERSION;
 | 
				
			||||||
 | 
					    return GL3W_OK;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void load_procs(GL3WGetProcAddressProc proc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int imgl3wInit(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int res = open_libgl();
 | 
				
			||||||
 | 
					    if (res)
 | 
				
			||||||
 | 
					        return res;
 | 
				
			||||||
 | 
					    atexit(close_libgl);
 | 
				
			||||||
 | 
					    return imgl3wInit2(get_proc);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int imgl3wInit2(GL3WGetProcAddressProc proc)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    load_procs(proc);
 | 
				
			||||||
 | 
					    return parse_version();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					int imgl3wIsSupported(int major, int minor)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    if (major < 3)
 | 
				
			||||||
 | 
					        return 0;
 | 
				
			||||||
 | 
					    if (version.major == major)
 | 
				
			||||||
 | 
					        return version.minor >= minor;
 | 
				
			||||||
 | 
					    return version.major >= major;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GL3WglProc imgl3wGetProcAddress(const char *proc) { return get_proc(proc); }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static const char *proc_names[] = {
 | 
				
			||||||
 | 
					    "glActiveTexture",
 | 
				
			||||||
 | 
					    "glAttachShader",
 | 
				
			||||||
 | 
					    "glBindBuffer",
 | 
				
			||||||
 | 
					    "glBindSampler",
 | 
				
			||||||
 | 
					    "glBindTexture",
 | 
				
			||||||
 | 
					    "glBindVertexArray",
 | 
				
			||||||
 | 
					    "glBlendEquation",
 | 
				
			||||||
 | 
					    "glBlendEquationSeparate",
 | 
				
			||||||
 | 
					    "glBlendFuncSeparate",
 | 
				
			||||||
 | 
					    "glBufferData",
 | 
				
			||||||
 | 
					    "glClear",
 | 
				
			||||||
 | 
					    "glClearColor",
 | 
				
			||||||
 | 
					    "glClipControl",
 | 
				
			||||||
 | 
					    "glCompileShader",
 | 
				
			||||||
 | 
					    "glCreateProgram",
 | 
				
			||||||
 | 
					    "glCreateShader",
 | 
				
			||||||
 | 
					    "glDeleteBuffers",
 | 
				
			||||||
 | 
					    "glDeleteProgram",
 | 
				
			||||||
 | 
					    "glDeleteShader",
 | 
				
			||||||
 | 
					    "glDeleteTextures",
 | 
				
			||||||
 | 
					    "glDeleteVertexArrays",
 | 
				
			||||||
 | 
					    "glDetachShader",
 | 
				
			||||||
 | 
					    "glDisable",
 | 
				
			||||||
 | 
					    "glDrawElements",
 | 
				
			||||||
 | 
					    "glDrawElementsBaseVertex",
 | 
				
			||||||
 | 
					    "glEnable",
 | 
				
			||||||
 | 
					    "glEnableVertexAttribArray",
 | 
				
			||||||
 | 
					    "glGenBuffers",
 | 
				
			||||||
 | 
					    "glGenTextures",
 | 
				
			||||||
 | 
					    "glGenVertexArrays",
 | 
				
			||||||
 | 
					    "glGetAttribLocation",
 | 
				
			||||||
 | 
					    "glGetIntegerv",
 | 
				
			||||||
 | 
					    "glGetProgramInfoLog",
 | 
				
			||||||
 | 
					    "glGetProgramiv",
 | 
				
			||||||
 | 
					    "glGetShaderInfoLog",
 | 
				
			||||||
 | 
					    "glGetShaderiv",
 | 
				
			||||||
 | 
					    "glGetString",
 | 
				
			||||||
 | 
					    "glGetStringi",
 | 
				
			||||||
 | 
					    "glGetUniformLocation",
 | 
				
			||||||
 | 
					    "glIsEnabled",
 | 
				
			||||||
 | 
					    "glLinkProgram",
 | 
				
			||||||
 | 
					    "glPixelStorei",
 | 
				
			||||||
 | 
					    "glPolygonMode",
 | 
				
			||||||
 | 
					    "glScissor",
 | 
				
			||||||
 | 
					    "glShaderSource",
 | 
				
			||||||
 | 
					    "glTexImage2D",
 | 
				
			||||||
 | 
					    "glTexParameteri",
 | 
				
			||||||
 | 
					    "glUniform1i",
 | 
				
			||||||
 | 
					    "glUniformMatrix4fv",
 | 
				
			||||||
 | 
					    "glUseProgram",
 | 
				
			||||||
 | 
					    "glVertexAttribPointer",
 | 
				
			||||||
 | 
					    "glViewport",
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					GL3W_API union GL3WProcs gl3wProcs;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					static void load_procs(GL3WGetProcAddressProc proc)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    size_t i;
 | 
				
			||||||
 | 
					    for (i = 0; i < ARRAY_SIZE(proc_names); i++)
 | 
				
			||||||
 | 
					        gl3wProcs.ptr[i] = proc(proc_names[i]);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef __cplusplus
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
@@ -130,6 +130,9 @@ Other Changes:
 | 
				
			|||||||
  Other OSX examples were not affected. (#4253, #1873) [@rokups]
 | 
					  Other OSX examples were not affected. (#4253, #1873) [@rokups]
 | 
				
			||||||
- Examples: Updated all .vcxproj to VS2015 (toolset v140) to facilitate usage with vcpkg.
 | 
					- Examples: Updated all .vcxproj to VS2015 (toolset v140) to facilitate usage with vcpkg.
 | 
				
			||||||
- Examples: SDL2: Accomodate for vcpkg install having headers in SDL2/SDL.h vs SDL.h.
 | 
					- Examples: SDL2: Accomodate for vcpkg install having headers in SDL2/SDL.h vs SDL.h.
 | 
				
			||||||
 | 
					- Examples: OpenGL3+GLFW/SDL: Added minimal OpenGL loader imgui_impl_opengl3_loader.h and use it in OpenGL3 backend.
 | 
				
			||||||
 | 
					  Support for using custom OpenGL loader in the backend is removed, IMGUI_IMPL_OPENGL_LOADER_XX (except ES2/ES3) are
 | 
				
			||||||
 | 
					  no longer used. [@rokups]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-----------------------------------------------------------------------
 | 
					-----------------------------------------------------------------------
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,35 +31,6 @@ LIBS =
 | 
				
			|||||||
## OPENGL LOADER / OPENGL ES
 | 
					## OPENGL LOADER / OPENGL ES
 | 
				
			||||||
##---------------------------------------------------------------------
 | 
					##---------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## See below for OpenGL ES option (no loader required) - comment out
 | 
					 | 
				
			||||||
## the following if you want to use OpenGL ES instead of Desktop GL.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL loader: gl3w [default]
 | 
					 | 
				
			||||||
SOURCES += ../libs/gl3w/GL/gl3w.c
 | 
					 | 
				
			||||||
CXXFLAGS += -I../libs/gl3w -DIMGUI_IMPL_OPENGL_LOADER_GL3W
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL loader: glew
 | 
					 | 
				
			||||||
## (This assumes a system-wide installation)
 | 
					 | 
				
			||||||
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_LOADER_GLEW
 | 
					 | 
				
			||||||
# LIBS += -lGLEW
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL loader: glad
 | 
					 | 
				
			||||||
# SOURCES += ../libs/glad/src/glad.c
 | 
					 | 
				
			||||||
# CXXFLAGS += -I../libs/glad/include -DIMGUI_IMPL_OPENGL_LOADER_GLAD
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL loader: glad2
 | 
					 | 
				
			||||||
# SOURCES += ../libs/glad/src/gl.c
 | 
					 | 
				
			||||||
# CXXFLAGS += -I../libs/glad/include -DIMGUI_IMPL_OPENGL_LOADER_GLAD2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL loader: glbinding
 | 
					 | 
				
			||||||
## This assumes a system-wide installation
 | 
					 | 
				
			||||||
## of either version 3.0.0 (or newer)
 | 
					 | 
				
			||||||
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_LOADER_GLBINDING3
 | 
					 | 
				
			||||||
# LIBS += -lglbinding
 | 
					 | 
				
			||||||
## or the older version 2.x
 | 
					 | 
				
			||||||
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_LOADER_GLBINDING2
 | 
					 | 
				
			||||||
# LIBS += -lglbinding
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL ES, no loader required
 | 
					## Using OpenGL ES, no loader required
 | 
				
			||||||
## This assumes a GL ES library available in the system, e.g. libGLESv2.so
 | 
					## This assumes a GL ES library available in the system, e.g. libGLESv2.so
 | 
				
			||||||
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_ES2
 | 
					# CXXFLAGS += -DIMGUI_IMPL_OPENGL_ES2
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -90,7 +90,7 @@
 | 
				
			|||||||
    <ClCompile>
 | 
					    <ClCompile>
 | 
				
			||||||
      <WarningLevel>Level4</WarningLevel>
 | 
					      <WarningLevel>Level4</WarningLevel>
 | 
				
			||||||
      <Optimization>Disabled</Optimization>
 | 
					      <Optimization>Disabled</Optimization>
 | 
				
			||||||
      <AdditionalIncludeDirectories>..\..;..\..\backends;..\libs\glfw\include;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
					      <AdditionalIncludeDirectories>..\..;..\..\backends;..\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <Link>
 | 
					    <Link>
 | 
				
			||||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
					      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
				
			||||||
@@ -104,7 +104,7 @@
 | 
				
			|||||||
    <ClCompile>
 | 
					    <ClCompile>
 | 
				
			||||||
      <WarningLevel>Level4</WarningLevel>
 | 
					      <WarningLevel>Level4</WarningLevel>
 | 
				
			||||||
      <Optimization>Disabled</Optimization>
 | 
					      <Optimization>Disabled</Optimization>
 | 
				
			||||||
      <AdditionalIncludeDirectories>..\..;..\..\backends;..\libs\glfw\include;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
					      <AdditionalIncludeDirectories>..\..;..\..\backends;..\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <Link>
 | 
					    <Link>
 | 
				
			||||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
					      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
				
			||||||
@@ -120,7 +120,7 @@
 | 
				
			|||||||
      <Optimization>MaxSpeed</Optimization>
 | 
					      <Optimization>MaxSpeed</Optimization>
 | 
				
			||||||
      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
					      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
				
			||||||
      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
					      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
				
			||||||
      <AdditionalIncludeDirectories>..\..;..\..\backends;..\libs\glfw\include;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
					      <AdditionalIncludeDirectories>..\..;..\..\backends;..\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
				
			||||||
      <BufferSecurityCheck>false</BufferSecurityCheck>
 | 
					      <BufferSecurityCheck>false</BufferSecurityCheck>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <Link>
 | 
					    <Link>
 | 
				
			||||||
@@ -140,7 +140,7 @@
 | 
				
			|||||||
      <Optimization>MaxSpeed</Optimization>
 | 
					      <Optimization>MaxSpeed</Optimization>
 | 
				
			||||||
      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
					      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
				
			||||||
      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
					      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
				
			||||||
      <AdditionalIncludeDirectories>..\..;..\..\backends;..\libs\glfw\include;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
					      <AdditionalIncludeDirectories>..\..;..\..\backends;..\libs\glfw\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
				
			||||||
      <BufferSecurityCheck>false</BufferSecurityCheck>
 | 
					      <BufferSecurityCheck>false</BufferSecurityCheck>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <Link>
 | 
					    <Link>
 | 
				
			||||||
@@ -162,7 +162,6 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\imgui_widgets.cpp" />
 | 
					    <ClCompile Include="..\..\imgui_widgets.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\backends\imgui_impl_glfw.cpp" />
 | 
					    <ClCompile Include="..\..\backends\imgui_impl_glfw.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\backends\imgui_impl_opengl3.cpp" />
 | 
					    <ClCompile Include="..\..\backends\imgui_impl_opengl3.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\libs\gl3w\GL\gl3w.c" />
 | 
					 | 
				
			||||||
    <ClCompile Include="main.cpp" />
 | 
					    <ClCompile Include="main.cpp" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
@@ -171,8 +170,7 @@
 | 
				
			|||||||
    <ClInclude Include="..\..\imgui_internal.h" />
 | 
					    <ClInclude Include="..\..\imgui_internal.h" />
 | 
				
			||||||
    <ClInclude Include="..\..\backends\imgui_impl_glfw.h" />
 | 
					    <ClInclude Include="..\..\backends\imgui_impl_glfw.h" />
 | 
				
			||||||
    <ClInclude Include="..\..\backends\imgui_impl_opengl3.h" />
 | 
					    <ClInclude Include="..\..\backends\imgui_impl_opengl3.h" />
 | 
				
			||||||
    <ClInclude Include="..\libs\gl3w\GL\gl3w.h" />
 | 
					    <ClInclude Include="..\..\backends\imgui_impl_opengl3_loader.h" />
 | 
				
			||||||
    <ClInclude Include="..\libs\gl3w\GL\glcorearb.h" />
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <None Include="..\..\misc\debuggers\imgui.natvis" />
 | 
					    <None Include="..\..\misc\debuggers\imgui.natvis" />
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,9 +8,6 @@
 | 
				
			|||||||
      <UniqueIdentifier>{f18ab499-84e1-499f-8eff-9754361e0e52}</UniqueIdentifier>
 | 
					      <UniqueIdentifier>{f18ab499-84e1-499f-8eff-9754361e0e52}</UniqueIdentifier>
 | 
				
			||||||
      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
 | 
					      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
 | 
				
			||||||
    </Filter>
 | 
					    </Filter>
 | 
				
			||||||
    <Filter Include="gl3w">
 | 
					 | 
				
			||||||
      <UniqueIdentifier>{42f99867-3108-43b8-99d0-fabefaf1f2e3}</UniqueIdentifier>
 | 
					 | 
				
			||||||
    </Filter>
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ClCompile Include="main.cpp">
 | 
					    <ClCompile Include="main.cpp">
 | 
				
			||||||
@@ -19,9 +16,6 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\imgui.cpp">
 | 
					    <ClCompile Include="..\..\imgui.cpp">
 | 
				
			||||||
      <Filter>imgui</Filter>
 | 
					      <Filter>imgui</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <ClCompile Include="..\libs\gl3w\GL\gl3w.c">
 | 
					 | 
				
			||||||
      <Filter>gl3w</Filter>
 | 
					 | 
				
			||||||
    </ClCompile>
 | 
					 | 
				
			||||||
    <ClCompile Include="..\..\imgui_demo.cpp">
 | 
					    <ClCompile Include="..\..\imgui_demo.cpp">
 | 
				
			||||||
      <Filter>imgui</Filter>
 | 
					      <Filter>imgui</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
@@ -48,12 +42,6 @@
 | 
				
			|||||||
    <ClInclude Include="..\..\imgui.h">
 | 
					    <ClInclude Include="..\..\imgui.h">
 | 
				
			||||||
      <Filter>imgui</Filter>
 | 
					      <Filter>imgui</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
    <ClInclude Include="..\libs\gl3w\GL\gl3w.h">
 | 
					 | 
				
			||||||
      <Filter>gl3w</Filter>
 | 
					 | 
				
			||||||
    </ClInclude>
 | 
					 | 
				
			||||||
    <ClInclude Include="..\libs\gl3w\GL\glcorearb.h">
 | 
					 | 
				
			||||||
      <Filter>gl3w</Filter>
 | 
					 | 
				
			||||||
    </ClInclude>
 | 
					 | 
				
			||||||
    <ClInclude Include="..\..\imgui_internal.h">
 | 
					    <ClInclude Include="..\..\imgui_internal.h">
 | 
				
			||||||
      <Filter>imgui</Filter>
 | 
					      <Filter>imgui</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
@@ -63,6 +51,9 @@
 | 
				
			|||||||
    <ClInclude Include="..\..\backends\imgui_impl_opengl3.h">
 | 
					    <ClInclude Include="..\..\backends\imgui_impl_opengl3.h">
 | 
				
			||||||
      <Filter>sources</Filter>
 | 
					      <Filter>sources</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\backends\imgui_impl_opengl3_loader.h">
 | 
				
			||||||
 | 
					      <Filter>sources</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <None Include="..\README.txt" />
 | 
					    <None Include="..\README.txt" />
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,30 +10,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#if defined(IMGUI_IMPL_OPENGL_ES2)
 | 
					#if defined(IMGUI_IMPL_OPENGL_ES2)
 | 
				
			||||||
#include <GLES2/gl2.h>
 | 
					#include <GLES2/gl2.h>
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
// About Desktop OpenGL function loaders:
 | 
					// About Desktop OpenGL function loaders:
 | 
				
			||||||
//  Modern desktop OpenGL doesn't have a standard portable header file to load OpenGL function pointers.
 | 
					//  Modern desktop OpenGL doesn't have a standard portable header file to load OpenGL function pointers.
 | 
				
			||||||
//  Helper libraries are often used for this purpose! Here we are supporting a few common ones (gl3w, glew, glad).
 | 
					//  Here we are using our own minimal loader based on gl3w. You may use another loader/header of your choice (glext, glLoadGen, etc.),
 | 
				
			||||||
//  You may use another loader/header of your choice (glext, glLoadGen, etc.), or chose to manually implement your own.
 | 
					//  or chose to manually implement your own.
 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GL3W)
 | 
					#include "imgui_impl_opengl3_loader.h"
 | 
				
			||||||
#include <GL/gl3w.h>            // Initialize with gl3wInit()
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLEW)
 | 
					 | 
				
			||||||
#include <GL/glew.h>            // Initialize with glewInit()
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD)
 | 
					 | 
				
			||||||
#include <glad/glad.h>          // Initialize with gladLoadGL()
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD2)
 | 
					 | 
				
			||||||
#include <glad/gl.h>            // Initialize with gladLoadGL(...) or gladLoaderLoadGL()
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING2)
 | 
					 | 
				
			||||||
#define GLFW_INCLUDE_NONE       // GLFW including OpenGL headers causes ambiguity or multiple definition errors.
 | 
					 | 
				
			||||||
#include <glbinding/Binding.h>  // Initialize with glbinding::Binding::initialize()
 | 
					 | 
				
			||||||
#include <glbinding/gl/gl.h>
 | 
					 | 
				
			||||||
using namespace gl;
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING3)
 | 
					 | 
				
			||||||
#define GLFW_INCLUDE_NONE       // GLFW including OpenGL headers causes ambiguity or multiple definition errors.
 | 
					 | 
				
			||||||
#include <glbinding/glbinding.h>// Initialize with glbinding::initialize()
 | 
					 | 
				
			||||||
#include <glbinding/gl/gl.h>
 | 
					 | 
				
			||||||
using namespace gl;
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#include IMGUI_IMPL_OPENGL_LOADER_CUSTOM
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Include glfw3.h after our OpenGL definitions
 | 
					// Include glfw3.h after our OpenGL definitions
 | 
				
			||||||
@@ -88,30 +70,6 @@ int main(int, char**)
 | 
				
			|||||||
    glfwMakeContextCurrent(window);
 | 
					    glfwMakeContextCurrent(window);
 | 
				
			||||||
    glfwSwapInterval(1); // Enable vsync
 | 
					    glfwSwapInterval(1); // Enable vsync
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Initialize OpenGL loader
 | 
					 | 
				
			||||||
#if defined(IMGUI_IMPL_OPENGL_LOADER_GL3W)
 | 
					 | 
				
			||||||
    bool err = gl3wInit() != 0;
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLEW)
 | 
					 | 
				
			||||||
    bool err = glewInit() != GLEW_OK;
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD)
 | 
					 | 
				
			||||||
    bool err = gladLoadGL() == 0;
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD2)
 | 
					 | 
				
			||||||
    bool err = gladLoadGL(glfwGetProcAddress) == 0; // glad2 recommend using the windowing library loader instead of the (optionally) bundled one.
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING2)
 | 
					 | 
				
			||||||
    bool err = false;
 | 
					 | 
				
			||||||
    glbinding::Binding::initialize();
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING3)
 | 
					 | 
				
			||||||
    bool err = false;
 | 
					 | 
				
			||||||
    glbinding::initialize([](const char* name) { return (glbinding::ProcAddress)glfwGetProcAddress(name); });
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    bool err = false; // If you use IMGUI_IMPL_OPENGL_LOADER_CUSTOM, your loader is likely to requires some form of initialization.
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    if (err)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        fprintf(stderr, "Failed to initialize OpenGL loader!\n");
 | 
					 | 
				
			||||||
        return 1;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Setup Dear ImGui context
 | 
					    // Setup Dear ImGui context
 | 
				
			||||||
    IMGUI_CHECKVERSION();
 | 
					    IMGUI_CHECKVERSION();
 | 
				
			||||||
    ImGui::CreateContext();
 | 
					    ImGui::CreateContext();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -31,35 +31,6 @@ LIBS =
 | 
				
			|||||||
## OPENGL LOADER / OPENGL ES
 | 
					## OPENGL LOADER / OPENGL ES
 | 
				
			||||||
##---------------------------------------------------------------------
 | 
					##---------------------------------------------------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## See below for OpenGL ES option (no loader required) - comment out
 | 
					 | 
				
			||||||
## the following if you want to use OpenGL ES instead of Desktop GL.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL loader: gl3w [default]
 | 
					 | 
				
			||||||
SOURCES += ../libs/gl3w/GL/gl3w.c
 | 
					 | 
				
			||||||
CXXFLAGS += -I../libs/gl3w -DIMGUI_IMPL_OPENGL_LOADER_GL3W
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL loader: glew
 | 
					 | 
				
			||||||
## (This assumes a system-wide installation)
 | 
					 | 
				
			||||||
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_LOADER_GLEW
 | 
					 | 
				
			||||||
# LIBS += -lGLEW
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL loader: glad
 | 
					 | 
				
			||||||
# SOURCES += ../libs/glad/src/glad.c
 | 
					 | 
				
			||||||
# CXXFLAGS += -I../libs/glad/include -DIMGUI_IMPL_OPENGL_LOADER_GLAD
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL loader: glad2
 | 
					 | 
				
			||||||
# SOURCES += ../libs/glad/src/gl.c
 | 
					 | 
				
			||||||
# CXXFLAGS += -I../libs/glad/include -DIMGUI_IMPL_OPENGL_LOADER_GLAD2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL loader: glbinding
 | 
					 | 
				
			||||||
## This assumes a system-wide installation
 | 
					 | 
				
			||||||
## of either version 3.0.0 (or newer)
 | 
					 | 
				
			||||||
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_LOADER_GLBINDING3
 | 
					 | 
				
			||||||
# LIBS += -lglbinding
 | 
					 | 
				
			||||||
## or the older version 2.x
 | 
					 | 
				
			||||||
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_LOADER_GLBINDING2
 | 
					 | 
				
			||||||
# LIBS += -lglbinding
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Using OpenGL ES, no loader required
 | 
					## Using OpenGL ES, no loader required
 | 
				
			||||||
## This assumes a GL ES library available in the system, e.g. libGLESv2.so
 | 
					## This assumes a GL ES library available in the system, e.g. libGLESv2.so
 | 
				
			||||||
# CXXFLAGS += -DIMGUI_IMPL_OPENGL_ES2
 | 
					# CXXFLAGS += -DIMGUI_IMPL_OPENGL_ES2
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -90,7 +90,7 @@
 | 
				
			|||||||
    <ClCompile>
 | 
					    <ClCompile>
 | 
				
			||||||
      <WarningLevel>Level4</WarningLevel>
 | 
					      <WarningLevel>Level4</WarningLevel>
 | 
				
			||||||
      <Optimization>Disabled</Optimization>
 | 
					      <Optimization>Disabled</Optimization>
 | 
				
			||||||
      <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
					      <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <Link>
 | 
					    <Link>
 | 
				
			||||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
					      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
				
			||||||
@@ -104,7 +104,7 @@
 | 
				
			|||||||
    <ClCompile>
 | 
					    <ClCompile>
 | 
				
			||||||
      <WarningLevel>Level4</WarningLevel>
 | 
					      <WarningLevel>Level4</WarningLevel>
 | 
				
			||||||
      <Optimization>Disabled</Optimization>
 | 
					      <Optimization>Disabled</Optimization>
 | 
				
			||||||
      <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
					      <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <Link>
 | 
					    <Link>
 | 
				
			||||||
      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
					      <GenerateDebugInformation>true</GenerateDebugInformation>
 | 
				
			||||||
@@ -120,7 +120,7 @@
 | 
				
			|||||||
      <Optimization>MaxSpeed</Optimization>
 | 
					      <Optimization>MaxSpeed</Optimization>
 | 
				
			||||||
      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
					      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
				
			||||||
      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
					      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
				
			||||||
      <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
					      <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
				
			||||||
      <BufferSecurityCheck>false</BufferSecurityCheck>
 | 
					      <BufferSecurityCheck>false</BufferSecurityCheck>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <Link>
 | 
					    <Link>
 | 
				
			||||||
@@ -140,7 +140,7 @@
 | 
				
			|||||||
      <Optimization>MaxSpeed</Optimization>
 | 
					      <Optimization>MaxSpeed</Optimization>
 | 
				
			||||||
      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
					      <FunctionLevelLinking>true</FunctionLevelLinking>
 | 
				
			||||||
      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
					      <IntrinsicFunctions>true</IntrinsicFunctions>
 | 
				
			||||||
      <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;..\libs\gl3w;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
					      <AdditionalIncludeDirectories>..\..;..\..\backends;%SDL2_DIR%\include;$(VcpkgCurrentInstalledDir)include\SDL2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
 | 
				
			||||||
      <BufferSecurityCheck>false</BufferSecurityCheck>
 | 
					      <BufferSecurityCheck>false</BufferSecurityCheck>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <Link>
 | 
					    <Link>
 | 
				
			||||||
@@ -162,7 +162,6 @@
 | 
				
			|||||||
    <ClCompile Include="..\..\imgui_widgets.cpp" />
 | 
					    <ClCompile Include="..\..\imgui_widgets.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\backends\imgui_impl_opengl3.cpp" />
 | 
					    <ClCompile Include="..\..\backends\imgui_impl_opengl3.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\..\backends\imgui_impl_sdl.cpp" />
 | 
					    <ClCompile Include="..\..\backends\imgui_impl_sdl.cpp" />
 | 
				
			||||||
    <ClCompile Include="..\libs\gl3w\GL\gl3w.c" />
 | 
					 | 
				
			||||||
    <ClCompile Include="main.cpp" />
 | 
					    <ClCompile Include="main.cpp" />
 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
@@ -170,9 +169,8 @@
 | 
				
			|||||||
    <ClInclude Include="..\..\imgui.h" />
 | 
					    <ClInclude Include="..\..\imgui.h" />
 | 
				
			||||||
    <ClInclude Include="..\..\imgui_internal.h" />
 | 
					    <ClInclude Include="..\..\imgui_internal.h" />
 | 
				
			||||||
    <ClInclude Include="..\..\backends\imgui_impl_opengl3.h" />
 | 
					    <ClInclude Include="..\..\backends\imgui_impl_opengl3.h" />
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\backends\imgui_impl_opengl3_loader.h" />
 | 
				
			||||||
    <ClInclude Include="..\..\backends\imgui_impl_sdl.h" />
 | 
					    <ClInclude Include="..\..\backends\imgui_impl_sdl.h" />
 | 
				
			||||||
    <ClInclude Include="..\libs\gl3w\GL\gl3w.h" />
 | 
					 | 
				
			||||||
    <ClInclude Include="..\libs\gl3w\GL\glcorearb.h" />
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <None Include="..\..\misc\debuggers\imgui.natvis" />
 | 
					    <None Include="..\..\misc\debuggers\imgui.natvis" />
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,9 +8,6 @@
 | 
				
			|||||||
      <UniqueIdentifier>{f18ab499-84e1-499f-8eff-9754361e0e52}</UniqueIdentifier>
 | 
					      <UniqueIdentifier>{f18ab499-84e1-499f-8eff-9754361e0e52}</UniqueIdentifier>
 | 
				
			||||||
      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
 | 
					      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
 | 
				
			||||||
    </Filter>
 | 
					    </Filter>
 | 
				
			||||||
    <Filter Include="gl3w">
 | 
					 | 
				
			||||||
      <UniqueIdentifier>{f9997b32-5479-4756-9ffc-77793ad3764f}</UniqueIdentifier>
 | 
					 | 
				
			||||||
    </Filter>
 | 
					 | 
				
			||||||
  </ItemGroup>
 | 
					  </ItemGroup>
 | 
				
			||||||
  <ItemGroup>
 | 
					  <ItemGroup>
 | 
				
			||||||
    <ClCompile Include="..\..\imgui.cpp">
 | 
					    <ClCompile Include="..\..\imgui.cpp">
 | 
				
			||||||
@@ -25,9 +22,6 @@
 | 
				
			|||||||
    <ClCompile Include="main.cpp">
 | 
					    <ClCompile Include="main.cpp">
 | 
				
			||||||
      <Filter>sources</Filter>
 | 
					      <Filter>sources</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
    <ClCompile Include="..\libs\gl3w\GL\gl3w.c">
 | 
					 | 
				
			||||||
      <Filter>gl3w</Filter>
 | 
					 | 
				
			||||||
    </ClCompile>
 | 
					 | 
				
			||||||
    <ClCompile Include="..\..\backends\imgui_impl_opengl3.cpp">
 | 
					    <ClCompile Include="..\..\backends\imgui_impl_opengl3.cpp">
 | 
				
			||||||
      <Filter>sources</Filter>
 | 
					      <Filter>sources</Filter>
 | 
				
			||||||
    </ClCompile>
 | 
					    </ClCompile>
 | 
				
			||||||
@@ -51,15 +45,12 @@
 | 
				
			|||||||
    <ClInclude Include="..\..\imgui_internal.h">
 | 
					    <ClInclude Include="..\..\imgui_internal.h">
 | 
				
			||||||
      <Filter>imgui</Filter>
 | 
					      <Filter>imgui</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
    <ClInclude Include="..\libs\gl3w\GL\gl3w.h">
 | 
					 | 
				
			||||||
      <Filter>gl3w</Filter>
 | 
					 | 
				
			||||||
    </ClInclude>
 | 
					 | 
				
			||||||
    <ClInclude Include="..\libs\gl3w\GL\glcorearb.h">
 | 
					 | 
				
			||||||
      <Filter>gl3w</Filter>
 | 
					 | 
				
			||||||
    </ClInclude>
 | 
					 | 
				
			||||||
    <ClInclude Include="..\..\backends\imgui_impl_opengl3.h">
 | 
					    <ClInclude Include="..\..\backends\imgui_impl_opengl3.h">
 | 
				
			||||||
      <Filter>sources</Filter>
 | 
					      <Filter>sources</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
 | 
					    <ClInclude Include="..\..\backends\imgui_impl_opengl3_loader.h">
 | 
				
			||||||
 | 
					      <Filter>sources</Filter>
 | 
				
			||||||
 | 
					    </ClInclude>
 | 
				
			||||||
    <ClInclude Include="..\..\backends\imgui_impl_sdl.h">
 | 
					    <ClInclude Include="..\..\backends\imgui_impl_sdl.h">
 | 
				
			||||||
      <Filter>sources</Filter>
 | 
					      <Filter>sources</Filter>
 | 
				
			||||||
    </ClInclude>
 | 
					    </ClInclude>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,33 +9,10 @@
 | 
				
			|||||||
#include "imgui_impl_opengl3.h"
 | 
					#include "imgui_impl_opengl3.h"
 | 
				
			||||||
#include <stdio.h>
 | 
					#include <stdio.h>
 | 
				
			||||||
#include <SDL.h>
 | 
					#include <SDL.h>
 | 
				
			||||||
 | 
					#include <SDL_opengl.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if defined(IMGUI_IMPL_OPENGL_ES2)
 | 
					#if defined(IMGUI_IMPL_OPENGL_ES2)
 | 
				
			||||||
#include <GLES2/gl2.h>
 | 
					#include <SDL_opengles2.h>
 | 
				
			||||||
// About Desktop OpenGL function loaders:
 | 
					 | 
				
			||||||
//  Modern desktop OpenGL doesn't have a standard portable header file to load OpenGL function pointers.
 | 
					 | 
				
			||||||
//  Helper libraries are often used for this purpose! Here we are supporting a few common ones (gl3w, glew, glad).
 | 
					 | 
				
			||||||
//  You may use another loader/header of your choice (glext, glLoadGen, etc.), or chose to manually implement your own.
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GL3W)
 | 
					 | 
				
			||||||
#include <GL/gl3w.h>            // Initialize with gl3wInit()
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLEW)
 | 
					 | 
				
			||||||
#include <GL/glew.h>            // Initialize with glewInit()
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD)
 | 
					 | 
				
			||||||
#include <glad/glad.h>          // Initialize with gladLoadGL()
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD2)
 | 
					 | 
				
			||||||
#include <glad/gl.h>            // Initialize with gladLoadGL(...) or gladLoaderLoadGL()
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING2)
 | 
					 | 
				
			||||||
#define GLFW_INCLUDE_NONE       // GLFW including OpenGL headers causes ambiguity or multiple definition errors.
 | 
					 | 
				
			||||||
#include <glbinding/Binding.h>  // Initialize with glbinding::Binding::initialize()
 | 
					 | 
				
			||||||
#include <glbinding/gl/gl.h>
 | 
					 | 
				
			||||||
using namespace gl;
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING3)
 | 
					 | 
				
			||||||
#define GLFW_INCLUDE_NONE       // GLFW including OpenGL headers causes ambiguity or multiple definition errors.
 | 
					 | 
				
			||||||
#include <glbinding/glbinding.h>// Initialize with glbinding::initialize()
 | 
					 | 
				
			||||||
#include <glbinding/gl/gl.h>
 | 
					 | 
				
			||||||
using namespace gl;
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#include IMGUI_IMPL_OPENGL_LOADER_CUSTOM
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Main code
 | 
					// Main code
 | 
				
			||||||
@@ -84,30 +61,6 @@ int main(int, char**)
 | 
				
			|||||||
    SDL_GL_MakeCurrent(window, gl_context);
 | 
					    SDL_GL_MakeCurrent(window, gl_context);
 | 
				
			||||||
    SDL_GL_SetSwapInterval(1); // Enable vsync
 | 
					    SDL_GL_SetSwapInterval(1); // Enable vsync
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Initialize OpenGL loader
 | 
					 | 
				
			||||||
#if defined(IMGUI_IMPL_OPENGL_LOADER_GL3W)
 | 
					 | 
				
			||||||
    bool err = gl3wInit() != 0;
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLEW)
 | 
					 | 
				
			||||||
    bool err = glewInit() != GLEW_OK;
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD)
 | 
					 | 
				
			||||||
    bool err = gladLoadGL() == 0;
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLAD2)
 | 
					 | 
				
			||||||
    bool err = gladLoadGL((GLADloadfunc)SDL_GL_GetProcAddress) == 0; // glad2 recommend using the windowing library loader instead of the (optionally) bundled one.
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING2)
 | 
					 | 
				
			||||||
    bool err = false;
 | 
					 | 
				
			||||||
    glbinding::Binding::initialize();
 | 
					 | 
				
			||||||
#elif defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING3)
 | 
					 | 
				
			||||||
    bool err = false;
 | 
					 | 
				
			||||||
    glbinding::initialize([](const char* name) { return (glbinding::ProcAddress)SDL_GL_GetProcAddress(name); });
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
    bool err = false; // If you use IMGUI_IMPL_OPENGL_LOADER_CUSTOM, your loader is likely to requires some form of initialization.
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
    if (err)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        fprintf(stderr, "Failed to initialize OpenGL loader!\n");
 | 
					 | 
				
			||||||
        return 1;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Setup Dear ImGui context
 | 
					    // Setup Dear ImGui context
 | 
				
			||||||
    IMGUI_CHECKVERSION();
 | 
					    IMGUI_CHECKVERSION();
 | 
				
			||||||
    ImGui::CreateContext();
 | 
					    ImGui::CreateContext();
 | 
				
			||||||
 
 | 
				
			|||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user