mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-11-04 01:34:32 +00:00 
			
		
		
		
	Examples: GLFW+OpenGL3, SDL3+OpenGL3: Provide ES3 context creation code + failure handling. (#8197)
Untested for GLFW example.
This commit is contained in:
		@@ -43,11 +43,17 @@ int main(int, char**)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Decide GL+GLSL versions
 | 
					    // Decide GL+GLSL versions
 | 
				
			||||||
#if defined(IMGUI_IMPL_OPENGL_ES2)
 | 
					#if defined(IMGUI_IMPL_OPENGL_ES2)
 | 
				
			||||||
    // GL ES 2.0 + GLSL 100
 | 
					    // GL ES 2.0 + GLSL 100 (WebGL 1.0)
 | 
				
			||||||
    const char* glsl_version = "#version 100";
 | 
					    const char* glsl_version = "#version 100";
 | 
				
			||||||
    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
 | 
					    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2);
 | 
				
			||||||
    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
 | 
					    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
 | 
				
			||||||
    glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);
 | 
					    glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);
 | 
				
			||||||
 | 
					#elif defined(IMGUI_IMPL_OPENGL_ES3)
 | 
				
			||||||
 | 
					    // GL ES 3.0 + GLSL 300 es (WebGL 2.0)
 | 
				
			||||||
 | 
					    const char* glsl_version = "#version 300 es";
 | 
				
			||||||
 | 
					    glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
 | 
				
			||||||
 | 
					    glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0);
 | 
				
			||||||
 | 
					    glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API);
 | 
				
			||||||
#elif defined(__APPLE__)
 | 
					#elif defined(__APPLE__)
 | 
				
			||||||
    // GL 3.2 + GLSL 150
 | 
					    // GL 3.2 + GLSL 150
 | 
				
			||||||
    const char* glsl_version = "#version 150";
 | 
					    const char* glsl_version = "#version 150";
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -35,12 +35,19 @@ int main(int, char**)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    // Decide GL+GLSL versions
 | 
					    // Decide GL+GLSL versions
 | 
				
			||||||
#if defined(IMGUI_IMPL_OPENGL_ES2)
 | 
					#if defined(IMGUI_IMPL_OPENGL_ES2)
 | 
				
			||||||
    // GL ES 2.0 + GLSL 100
 | 
					    // GL ES 2.0 + GLSL 100 (WebGL 1.0)
 | 
				
			||||||
    const char* glsl_version = "#version 100";
 | 
					    const char* glsl_version = "#version 100";
 | 
				
			||||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, 0);
 | 
					    SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, 0);
 | 
				
			||||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
 | 
					    SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
 | 
				
			||||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
 | 
					    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2);
 | 
				
			||||||
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
 | 
					    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
 | 
				
			||||||
 | 
					#elif defined(IMGUI_IMPL_OPENGL_ES3)
 | 
				
			||||||
 | 
					    // GL ES 3.0 + GLSL 300 es (WebGL 2.0)
 | 
				
			||||||
 | 
					    const char* glsl_version = "#version 300 es";
 | 
				
			||||||
 | 
					    SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, 0);
 | 
				
			||||||
 | 
					    SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_ES);
 | 
				
			||||||
 | 
					    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);
 | 
				
			||||||
 | 
					    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0);
 | 
				
			||||||
#elif defined(__APPLE__)
 | 
					#elif defined(__APPLE__)
 | 
				
			||||||
    // GL 3.2 Core + GLSL 150
 | 
					    // GL 3.2 Core + GLSL 150
 | 
				
			||||||
    const char* glsl_version = "#version 150";
 | 
					    const char* glsl_version = "#version 150";
 | 
				
			||||||
@@ -70,6 +77,12 @@ int main(int, char**)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    SDL_SetWindowPosition(window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
 | 
					    SDL_SetWindowPosition(window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
 | 
				
			||||||
    SDL_GLContext gl_context = SDL_GL_CreateContext(window);
 | 
					    SDL_GLContext gl_context = SDL_GL_CreateContext(window);
 | 
				
			||||||
 | 
					    if (gl_context == nullptr)
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        printf("Error: SDL_GL_CreateContext(): %s\n", SDL_GetError());
 | 
				
			||||||
 | 
					        return -1;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    SDL_GL_MakeCurrent(window, gl_context);
 | 
					    SDL_GL_MakeCurrent(window, gl_context);
 | 
				
			||||||
    SDL_GL_SetSwapInterval(1); // Enable vsync
 | 
					    SDL_GL_SetSwapInterval(1); // Enable vsync
 | 
				
			||||||
    SDL_ShowWindow(window);
 | 
					    SDL_ShowWindow(window);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user