|
|
|
@ -132,8 +132,8 @@ static GLuint g_GlVersion = 0; // Extracted at runtime usin
|
|
|
|
|
static char g_GlslVersionString[32] = ""; // Specified by user or detected based on compile time GL settings.
|
|
|
|
|
static GLuint g_FontTexture = 0;
|
|
|
|
|
static GLuint g_ShaderHandle = 0, g_VertHandle = 0, g_FragHandle = 0;
|
|
|
|
|
static int g_AttribLocationTex = 0, g_AttribLocationProjMtx = 0; // Uniforms location
|
|
|
|
|
static int g_AttribLocationVtxPos = 0, g_AttribLocationVtxUV = 0, g_AttribLocationVtxColor = 0; // Vertex attributes location
|
|
|
|
|
static GLint g_AttribLocationTex = 0, g_AttribLocationProjMtx = 0; // Uniforms location
|
|
|
|
|
static GLuint g_AttribLocationVtxPos = 0, g_AttribLocationVtxUV = 0, g_AttribLocationVtxColor = 0; // Vertex attributes location
|
|
|
|
|
static unsigned int g_VboHandle = 0, g_ElementsHandle = 0;
|
|
|
|
|
|
|
|
|
|
// Functions
|
|
|
|
@ -144,7 +144,7 @@ bool ImGui_ImplOpenGL3_Init(const char* glsl_version)
|
|
|
|
|
GLint major, minor;
|
|
|
|
|
glGetIntegerv(GL_MAJOR_VERSION, &major);
|
|
|
|
|
glGetIntegerv(GL_MINOR_VERSION, &minor);
|
|
|
|
|
g_GlVersion = major * 100 + minor * 10;
|
|
|
|
|
g_GlVersion = (GLuint)(major * 100 + minor * 10);
|
|
|
|
|
#else
|
|
|
|
|
g_GlVersion = 200; // GLES 2
|
|
|
|
|
#endif
|
|
|
|
@ -292,14 +292,14 @@ void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data)
|
|
|
|
|
// Backup GL state
|
|
|
|
|
GLenum last_active_texture; glGetIntegerv(GL_ACTIVE_TEXTURE, (GLint*)&last_active_texture);
|
|
|
|
|
glActiveTexture(GL_TEXTURE0);
|
|
|
|
|
GLint last_program; glGetIntegerv(GL_CURRENT_PROGRAM, &last_program);
|
|
|
|
|
GLint last_texture; glGetIntegerv(GL_TEXTURE_BINDING_2D, &last_texture);
|
|
|
|
|
GLuint last_program; glGetIntegerv(GL_CURRENT_PROGRAM, (GLint*)&last_program);
|
|
|
|
|
GLuint last_texture; glGetIntegerv(GL_TEXTURE_BINDING_2D, (GLint*)&last_texture);
|
|
|
|
|
#ifdef GL_SAMPLER_BINDING
|
|
|
|
|
GLint last_sampler; glGetIntegerv(GL_SAMPLER_BINDING, &last_sampler);
|
|
|
|
|
GLuint last_sampler; glGetIntegerv(GL_SAMPLER_BINDING, (GLint*)&last_sampler);
|
|
|
|
|
#endif
|
|
|
|
|
GLint last_array_buffer; glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &last_array_buffer);
|
|
|
|
|
GLuint last_array_buffer; glGetIntegerv(GL_ARRAY_BUFFER_BINDING, (GLint*)&last_array_buffer);
|
|
|
|
|
#ifndef IMGUI_IMPL_OPENGL_ES2
|
|
|
|
|
GLint last_vertex_array_object; glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &last_vertex_array_object);
|
|
|
|
|
GLuint last_vertex_array_object; glGetIntegerv(GL_VERTEX_ARRAY_BINDING, (GLint*)&last_vertex_array_object);
|
|
|
|
|
#endif
|
|
|
|
|
#ifdef GL_POLYGON_MODE
|
|
|
|
|
GLint last_polygon_mode[2]; glGetIntegerv(GL_POLYGON_MODE, last_polygon_mode);
|
|
|
|
@ -336,8 +336,8 @@ void ImGui_ImplOpenGL3_RenderDrawData(ImDrawData* draw_data)
|
|
|
|
|
const ImDrawList* cmd_list = draw_data->CmdLists[n];
|
|
|
|
|
|
|
|
|
|
// Upload vertex/index buffers
|
|
|
|
|
glBufferData(GL_ARRAY_BUFFER, (GLsizeiptr)cmd_list->VtxBuffer.Size * sizeof(ImDrawVert), (const GLvoid*)cmd_list->VtxBuffer.Data, GL_STREAM_DRAW);
|
|
|
|
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, (GLsizeiptr)cmd_list->IdxBuffer.Size * sizeof(ImDrawIdx), (const GLvoid*)cmd_list->IdxBuffer.Data, GL_STREAM_DRAW);
|
|
|
|
|
glBufferData(GL_ARRAY_BUFFER, (GLsizeiptr)cmd_list->VtxBuffer.Size * (int)sizeof(ImDrawVert), (const GLvoid*)cmd_list->VtxBuffer.Data, GL_STREAM_DRAW);
|
|
|
|
|
glBufferData(GL_ELEMENT_ARRAY_BUFFER, (GLsizeiptr)cmd_list->IdxBuffer.Size * (int)sizeof(ImDrawIdx), (const GLvoid*)cmd_list->IdxBuffer.Data, GL_STREAM_DRAW);
|
|
|
|
|
|
|
|
|
|
for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++)
|
|
|
|
|
{
|
|
|
|
@ -643,9 +643,9 @@ bool ImGui_ImplOpenGL3_CreateDeviceObjects()
|
|
|
|
|
|
|
|
|
|
g_AttribLocationTex = glGetUniformLocation(g_ShaderHandle, "Texture");
|
|
|
|
|
g_AttribLocationProjMtx = glGetUniformLocation(g_ShaderHandle, "ProjMtx");
|
|
|
|
|
g_AttribLocationVtxPos = glGetAttribLocation(g_ShaderHandle, "Position");
|
|
|
|
|
g_AttribLocationVtxUV = glGetAttribLocation(g_ShaderHandle, "UV");
|
|
|
|
|
g_AttribLocationVtxColor = glGetAttribLocation(g_ShaderHandle, "Color");
|
|
|
|
|
g_AttribLocationVtxPos = (GLuint)glGetAttribLocation(g_ShaderHandle, "Position");
|
|
|
|
|
g_AttribLocationVtxUV = (GLuint)glGetAttribLocation(g_ShaderHandle, "UV");
|
|
|
|
|
g_AttribLocationVtxColor = (GLuint)glGetAttribLocation(g_ShaderHandle, "Color");
|
|
|
|
|
|
|
|
|
|
// Create buffers
|
|
|
|
|
glGenBuffers(1, &g_VboHandle);
|
|
|
|
|