Skip to content

Commit 544db70

Browse files
committed
Examples: OpenGL3: Tweaks, added changelog. (#1941)
1 parent fc737d2 commit 544db70

File tree

2 files changed

+22
-20
lines changed

2 files changed

+22
-20
lines changed

CHANGELOG.txt

+2-1
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ Other Changes:
6666
- Examples: OSX: Added early raw OSX platform backend. (#1873) [@pagghiu, @itamago, @ocornut]
6767
- Examples: Added mac OSX & iOS + Metal example in example_apple_metal/. (#1929, #1873) [@warrenm]
6868
- Examples: Added mac OSX + OpenGL2 example in example_apple_opengl2/. (#1873)
69-
- Examples: OpenGL3: Added shaders more versions of GLSL. (#1938, #1900, #1513, #1466, etc.)
69+
- Examples: OpenGL3: Added shaders more versions of GLSL. (#1938, #1941, #1900, #1513, #1466, etc.)
70+
- Examples: OpenGL3: Tweaked the imgui_impl_opengl3.cpp to work as-is with Emscripten + WebGL 2.0. (#1941). [@o-micron]
7071
- Examples: OpenGL3: Made the example app default to GL 3.0 + GLSL 130 (instead of GL 3.2 + GLSL 150) unless on Mac.
7172
- Examples: OpenGL3: Added error output when shaders fail to compile/link.
7273
- Examples: DirectX10, DirectX11: Fixed unreleased resources in Init and Shutdown functions. (#1944)

examples/imgui_impl_opengl3.cpp

+20-19
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
// CHANGELOG
1313
// (minor and older changes stripped away, please see git history for details)
14+
// 2018-07-30: OpenGL: Support for GLSL 300 ES and 410 core. Fixes for Emscripten compilation.
1415
// 2018-07-10: OpenGL: Support for more GLSL versions (based on the GLSL version string). Added error output when shaders fail to compile/link.
1516
// 2018-06-08: Misc: Extracted imgui_impl_opengl3.cpp/.h away from the old combined GLFW/SDL+OpenGL3 examples.
1617
// 2018-06-08: OpenGL: Use draw_data->DisplayPos and draw_data->DisplaySize to setup projection matrix and clipping rectangle.
@@ -58,13 +59,13 @@
5859
#endif
5960

6061
#ifdef __EMSCRIPTEN__
61-
#include <GLES3/gl3.h>
62+
#include <GLES3/gl3.h> // Use GL ES 3
6263
#else
63-
#include <GL/gl3w.h> // This example is using gl3w to access OpenGL functions. You may use another OpenGL loader/header such as: glew, glext, glad, glLoadGen, etc.
64-
#endif
64+
#include <GL/gl3w.h> // This example is using gl3w to access OpenGL functions. You may use another OpenGL loader/header such as: glew, glext, glad, glLoadGen, etc.
6565
//#include <glew.h>
6666
//#include <glext.h>
6767
//#include <glad/glad.h>
68+
#endif
6869

6970
// OpenGL Data
7071
static char g_GlslVersionString[32] = "";
@@ -118,9 +119,9 @@ void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data)
118119
GLint last_sampler; glGetIntegerv(GL_SAMPLER_BINDING, &last_sampler);
119120
GLint last_array_buffer; glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &last_array_buffer);
120121
GLint last_vertex_array; glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &last_vertex_array);
121-
#ifdef GL_POLYGON_MODE
122-
GLint last_polygon_mode[2]; glGetIntegerv(GL_POLYGON_MODE, last_polygon_mode);
123-
#endif
122+
#ifdef GL_POLYGON_MODE
123+
GLint last_polygon_mode[2]; glGetIntegerv(GL_POLYGON_MODE, last_polygon_mode);
124+
#endif
124125
GLint last_viewport[4]; glGetIntegerv(GL_VIEWPORT, last_viewport);
125126
GLint last_scissor_box[4]; glGetIntegerv(GL_SCISSOR_BOX, last_scissor_box);
126127
GLenum last_blend_src_rgb; glGetIntegerv(GL_BLEND_SRC_RGB, (GLint*)&last_blend_src_rgb);
@@ -141,9 +142,9 @@ void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data)
141142
glDisable(GL_CULL_FACE);
142143
glDisable(GL_DEPTH_TEST);
143144
glEnable(GL_SCISSOR_TEST);
144-
#ifdef glPolygonMode
145-
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
146-
#endif
145+
#ifdef GL_POLYGON_MODE
146+
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
147+
#endif
147148

148149
// Setup viewport, orthographic projection matrix
149150
// Our visible imgui space lies from draw_data->DisplayPps (top left) to draw_data->DisplayPos+data_data->DisplaySize (bottom right). DisplayMin is typically (0,0) for single viewport apps.
@@ -229,9 +230,9 @@ void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data)
229230
if (last_enable_cull_face) glEnable(GL_CULL_FACE); else glDisable(GL_CULL_FACE);
230231
if (last_enable_depth_test) glEnable(GL_DEPTH_TEST); else glDisable(GL_DEPTH_TEST);
231232
if (last_enable_scissor_test) glEnable(GL_SCISSOR_TEST); else glDisable(GL_SCISSOR_TEST);
232-
#ifdef glPolygonMode
233-
glPolygonMode(GL_FRONT_AND_BACK, (GLenum)last_polygon_mode[0]);
234-
#endif
233+
#ifdef GL_POLYGON_MODE
234+
glPolygonMode(GL_FRONT_AND_BACK, (GLenum)last_polygon_mode[0]);
235+
#endif
235236
glViewport(last_viewport[0], last_viewport[1], (GLsizei)last_viewport[2], (GLsizei)last_viewport[3]);
236237
glScissor(last_scissor_box[0], last_scissor_box[1], (GLsizei)last_scissor_box[2], (GLsizei)last_scissor_box[3]);
237238
}
@@ -425,21 +426,21 @@ bool ImGui_ImplOpenGL3_CreateDeviceObjects()
425426
// Select shaders matching our GLSL versions
426427
const GLchar* vertex_shader = NULL;
427428
const GLchar* fragment_shader = NULL;
428-
if(glsl_version == 410)
429+
if (glsl_version < 130)
430+
{
431+
vertex_shader = vertex_shader_glsl_120;
432+
fragment_shader = fragment_shader_glsl_120;
433+
}
434+
else if (glsl_version == 410)
429435
{
430436
vertex_shader = vertex_shader_glsl_410_core;
431437
fragment_shader = fragment_shader_glsl_410_core;
432438
}
433-
else if(glsl_version == 300)
439+
else if (glsl_version == 300)
434440
{
435441
vertex_shader = vertex_shader_glsl_300_es;
436442
fragment_shader = fragment_shader_glsl_300_es;
437443
}
438-
else if (glsl_version < 130)
439-
{
440-
vertex_shader = vertex_shader_glsl_120;
441-
fragment_shader = fragment_shader_glsl_120;
442-
}
443444
else
444445
{
445446
vertex_shader = vertex_shader_glsl_130;

0 commit comments

Comments
 (0)