mirror of
				https://github.com/Drezil/imgui.git
				synced 2025-11-03 22:51:06 +01:00 
			
		
		
		
	Examples: SDL2+GL3: Fix blend func state save/restore (#1120)
This commit is contained in:
		@@ -45,8 +45,10 @@ void ImGui_ImplSdlGL3_RenderDrawLists(ImDrawData* draw_data)
 | 
				
			|||||||
    GLint last_array_buffer; glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &last_array_buffer);
 | 
					    GLint last_array_buffer; glGetIntegerv(GL_ARRAY_BUFFER_BINDING, &last_array_buffer);
 | 
				
			||||||
    GLint last_element_array_buffer; glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &last_element_array_buffer);
 | 
					    GLint last_element_array_buffer; glGetIntegerv(GL_ELEMENT_ARRAY_BUFFER_BINDING, &last_element_array_buffer);
 | 
				
			||||||
    GLint last_vertex_array; glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &last_vertex_array);
 | 
					    GLint last_vertex_array; glGetIntegerv(GL_VERTEX_ARRAY_BINDING, &last_vertex_array);
 | 
				
			||||||
    GLint last_blend_src; glGetIntegerv(GL_BLEND_SRC, &last_blend_src);
 | 
					    GLint last_blend_src_rgb; glGetIntegerv(GL_BLEND_SRC_RGB, &last_blend_src_rgb);
 | 
				
			||||||
    GLint last_blend_dst; glGetIntegerv(GL_BLEND_DST, &last_blend_dst);
 | 
					    GLint last_blend_dst_rgb; glGetIntegerv(GL_BLEND_DST_RGB, &last_blend_dst_rgb);
 | 
				
			||||||
 | 
					    GLint last_blend_src_alpha; glGetIntegerv(GL_BLEND_SRC_ALPHA, &last_blend_src_alpha);
 | 
				
			||||||
 | 
					    GLint last_blend_dst_alpha; glGetIntegerv(GL_BLEND_DST_ALPHA, &last_blend_dst_alpha);
 | 
				
			||||||
    GLint last_blend_equation_rgb; glGetIntegerv(GL_BLEND_EQUATION_RGB, &last_blend_equation_rgb);
 | 
					    GLint last_blend_equation_rgb; glGetIntegerv(GL_BLEND_EQUATION_RGB, &last_blend_equation_rgb);
 | 
				
			||||||
    GLint last_blend_equation_alpha; glGetIntegerv(GL_BLEND_EQUATION_ALPHA, &last_blend_equation_alpha);
 | 
					    GLint last_blend_equation_alpha; glGetIntegerv(GL_BLEND_EQUATION_ALPHA, &last_blend_equation_alpha);
 | 
				
			||||||
    GLint last_viewport[4]; glGetIntegerv(GL_VIEWPORT, last_viewport);
 | 
					    GLint last_viewport[4]; glGetIntegerv(GL_VIEWPORT, last_viewport);
 | 
				
			||||||
@@ -84,10 +86,10 @@ void ImGui_ImplSdlGL3_RenderDrawLists(ImDrawData* draw_data)
 | 
				
			|||||||
        const ImDrawIdx* idx_buffer_offset = 0;
 | 
					        const ImDrawIdx* idx_buffer_offset = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        glBindBuffer(GL_ARRAY_BUFFER, g_VboHandle);
 | 
					        glBindBuffer(GL_ARRAY_BUFFER, g_VboHandle);
 | 
				
			||||||
        glBufferData(GL_ARRAY_BUFFER, (GLsizeiptr)cmd_list->VtxBuffer.Size * sizeof(ImDrawVert), (GLvoid*)cmd_list->VtxBuffer.Data, GL_STREAM_DRAW);
 | 
					        glBufferData(GL_ARRAY_BUFFER, (GLsizeiptr)cmd_list->VtxBuffer.Size * sizeof(ImDrawVert), (const GLvoid*)cmd_list->VtxBuffer.Data, GL_STREAM_DRAW);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_ElementsHandle);
 | 
					        glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, g_ElementsHandle);
 | 
				
			||||||
        glBufferData(GL_ELEMENT_ARRAY_BUFFER, (GLsizeiptr)cmd_list->IdxBuffer.Size * sizeof(ImDrawIdx), (GLvoid*)cmd_list->IdxBuffer.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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++)
 | 
					        for (int cmd_i = 0; cmd_i < cmd_list->CmdBuffer.Size; cmd_i++)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
@@ -114,7 +116,7 @@ void ImGui_ImplSdlGL3_RenderDrawLists(ImDrawData* draw_data)
 | 
				
			|||||||
    glBindBuffer(GL_ARRAY_BUFFER, last_array_buffer);
 | 
					    glBindBuffer(GL_ARRAY_BUFFER, last_array_buffer);
 | 
				
			||||||
    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, last_element_array_buffer);
 | 
					    glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, last_element_array_buffer);
 | 
				
			||||||
    glBlendEquationSeparate(last_blend_equation_rgb, last_blend_equation_alpha);
 | 
					    glBlendEquationSeparate(last_blend_equation_rgb, last_blend_equation_alpha);
 | 
				
			||||||
    glBlendFunc(last_blend_src, last_blend_dst);
 | 
					    glBlendFuncSeparate(last_blend_src_rgb, last_blend_dst_rgb, last_blend_src_alpha, last_blend_dst_alpha);
 | 
				
			||||||
    if (last_enable_blend) glEnable(GL_BLEND); else glDisable(GL_BLEND);
 | 
					    if (last_enable_blend) glEnable(GL_BLEND); else glDisable(GL_BLEND);
 | 
				
			||||||
    if (last_enable_cull_face) glEnable(GL_CULL_FACE); else glDisable(GL_CULL_FACE);
 | 
					    if (last_enable_cull_face) glEnable(GL_CULL_FACE); else glDisable(GL_CULL_FACE);
 | 
				
			||||||
    if (last_enable_depth_test) glEnable(GL_DEPTH_TEST); else glDisable(GL_DEPTH_TEST);
 | 
					    if (last_enable_depth_test) glEnable(GL_DEPTH_TEST); else glDisable(GL_DEPTH_TEST);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user