Elaztek Developer Hub
Blamite Game Engine - blam!  00346.12.11.21.0529.blamite
The core library for the Blamite Game Engine.
imgui_impl_opengl3.h
Go to the documentation of this file.
1 // dear imgui: Renderer Backend for modern OpenGL with shaders / programmatic pipeline
2 // - Desktop GL: 2.x 3.x 4.x
3 // - Embedded GL: ES 2.0 (WebGL 1.0), ES 3.0 (WebGL 2.0)
4 // This needs to be used along with a Platform Backend (e.g. GLFW, SDL, Win32, custom..)
5 
6 // Implemented features:
7 // [X] Renderer: User texture binding. Use 'GLuint' OpenGL texture identifier as void*/ImTextureID. Read the FAQ about ImTextureID!
8 // [x] Renderer: Desktop GL only: Support for large meshes (64k+ vertices) with 16-bit indices.
9 
10 // You can copy and use unmodified imgui_impl_* files in your project. See examples/ folder for examples of using this.
11 // If you are new to Dear ImGui, read documentation from the docs/ folder + read the top of imgui.cpp.
12 // Read online: https://github.com/ocornut/imgui/tree/master/docs
13 
14 // About Desktop OpenGL function loaders:
15 // Modern Desktop OpenGL doesn't have a standard portable header file to load OpenGL function pointers.
16 // Helper libraries are often used for this purpose! Here we are supporting a few common ones (gl3w, glew, glad).
17 // You may use another loader/header of your choice (glext, glLoadGen, etc.), or chose to manually implement your own.
18 
19 // About GLSL version:
20 // The 'glsl_version' initialization parameter should be NULL (default) or a "#version XXX" string.
21 // On computer platform the GLSL version default to "#version 130". On OpenGL ES 3 platform it defaults to "#version 300 es"
22 // Only override if your GL version doesn't handle this GLSL version. See GLSL version table at the top of imgui_impl_opengl3.cpp.
23 
24 #pragma once
25 #include "../../imgui.h" // IMGUI_IMPL_API
26 
27 // Backend API
28 IMGUI_IMPL_API bool ImGui_ImplOpenGL3_Init(const char* glsl_version = NULL);
32 
33 // (Optional) Called by Init/NewFrame/Shutdown
38 
39 // Specific OpenGL ES versions
40 //#define IMGUI_IMPL_OPENGL_ES2 // Auto-detected on Emscripten
41 //#define IMGUI_IMPL_OPENGL_ES3 // Auto-detected on iOS/Android
42 
43 // Attempt to auto-detect the default Desktop GL loader based on available header files.
44 // If auto-detection fails or doesn't select the same GL loader file as used by your application,
45 // you are likely to get a crash in ImGui_ImplOpenGL3_Init().
46 // You can explicitly select a loader by using one of the '#define IMGUI_IMPL_OPENGL_LOADER_XXX' in imconfig.h or compiler command-line.
47 #if !defined(IMGUI_IMPL_OPENGL_ES2) \
48  && !defined(IMGUI_IMPL_OPENGL_ES3) \
49  && !defined(IMGUI_IMPL_OPENGL_LOADER_GL3W) \
50  && !defined(IMGUI_IMPL_OPENGL_LOADER_GLEW) \
51  && !defined(IMGUI_IMPL_OPENGL_LOADER_GLAD) \
52  && !defined(IMGUI_IMPL_OPENGL_LOADER_GLAD2) \
53  && !defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING2) \
54  && !defined(IMGUI_IMPL_OPENGL_LOADER_GLBINDING3) \
55  && !defined(IMGUI_IMPL_OPENGL_LOADER_CUSTOM)
56 
57 // Try to detect GLES on matching platforms
58 #if defined(__APPLE__)
59 #include "TargetConditionals.h"
60 #endif
61 #if (defined(__APPLE__) && (TARGET_OS_IOS || TARGET_OS_TV)) || (defined(__ANDROID__))
62 #define IMGUI_IMPL_OPENGL_ES3 // iOS, Android -> GL ES 3, "#version 300 es"
63 #elif defined(__EMSCRIPTEN__)
64 #define IMGUI_IMPL_OPENGL_ES2 // Emscripten -> GL ES 2, "#version 100"
65 
66 // Otherwise try to detect supported Desktop OpenGL loaders..
67 #elif defined(__has_include)
68 #if __has_include(<glew/glew.h>)
69  #define IMGUI_IMPL_OPENGL_LOADER_GLEW
70 #elif __has_include(<glad/glad.h>)
71  #define IMGUI_IMPL_OPENGL_LOADER_GLAD
72 #elif __has_include(<glad/gl.h>)
73  #define IMGUI_IMPL_OPENGL_LOADER_GLAD2
74 #elif __has_include(<GL/gl3w.h>)
75  #define IMGUI_IMPL_OPENGL_LOADER_GL3W
76 #elif __has_include(<glbinding/glbinding.h>)
77  #define IMGUI_IMPL_OPENGL_LOADER_GLBINDING3
78 #elif __has_include(<glbinding/Binding.h>)
79  #define IMGUI_IMPL_OPENGL_LOADER_GLBINDING2
80 #else
81  #error "Cannot detect OpenGL loader!"
82 #endif
83 #else
84  #define IMGUI_IMPL_OPENGL_LOADER_GL3W // Default to GL3W embedded in our repository
85 #endif
86 
87 #endif
ImGui_ImplOpenGL3_NewFrame
IMGUI_IMPL_API void ImGui_ImplOpenGL3_NewFrame()
Definition: imgui_impl_opengl3.cpp:238
ImGui_ImplOpenGL3_DestroyFontsTexture
IMGUI_IMPL_API void ImGui_ImplOpenGL3_DestroyFontsTexture()
Definition: imgui_impl_opengl3.cpp:475
ImGui_ImplOpenGL3_Shutdown
IMGUI_IMPL_API void ImGui_ImplOpenGL3_Shutdown()
Definition: imgui_impl_opengl3.cpp:233
NULL
Add a fourth parameter to bake specific font ranges NULL
Definition: README.txt:57
ImGui_ImplOpenGL3_CreateFontsTexture
IMGUI_IMPL_API bool ImGui_ImplOpenGL3_CreateFontsTexture()
Definition: imgui_impl_opengl3.cpp:446
ImDrawData
Definition: imgui.h:1979
ImGui_ImplOpenGL3_CreateDeviceObjects
IMGUI_IMPL_API bool ImGui_ImplOpenGL3_CreateDeviceObjects()
Definition: imgui_impl_opengl3.cpp:522
IMGUI_IMPL_API
#define IMGUI_IMPL_API
Definition: imgui.h:60
ImGui_ImplOpenGL3_Init
IMGUI_IMPL_API bool ImGui_ImplOpenGL3_Init(const char *glsl_version=NULL)
Definition: imgui_impl_opengl3.cpp:153
ImGui_ImplOpenGL3_RenderDrawData
IMGUI_IMPL_API void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData *draw_data)
Definition: imgui_impl_opengl3.cpp:312
ImGui_ImplOpenGL3_DestroyDeviceObjects
IMGUI_IMPL_API void ImGui_ImplOpenGL3_DestroyDeviceObjects()
Definition: imgui_impl_opengl3.cpp:702