| 194 | } |
| 195 | |
| 196 | void _MainWindow::initGlfwAndOpenGL() |
| 197 | { |
| 198 | glfwSetErrorCallback(glfwErrorCallback); |
| 199 | |
| 200 | if (!glfwInit()) { |
| 201 | throw std::runtime_error("Failed to initialize Glfw."); |
| 202 | } |
| 203 | |
| 204 | // Decide GL+GLSL versions |
| 205 | #if defined(IMGUI_IMPL_OPENGL_ES2) |
| 206 | // GL ES 2.0 + GLSL 100 |
| 207 | const char* glslVersion = "#version 100"; |
| 208 | glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 2); |
| 209 | glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); |
| 210 | glfwWindowHint(GLFW_CLIENT_API, GLFW_OPENGL_ES_API); |
| 211 | #elif defined(__APPLE__) |
| 212 | // GL 3.2 + GLSL 150 |
| 213 | const char* glslVersion = "#version 150"; |
| 214 | glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); |
| 215 | glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 2); |
| 216 | glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only |
| 217 | glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // Required on Mac |
| 218 | #else |
| 219 | // GL 3.0 + GLSL 130 |
| 220 | const char* glslVersion = "#version 130"; |
| 221 | glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); |
| 222 | glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 0); |
| 223 | //glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); // 3.2+ only |
| 224 | //glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // 3.0+ only |
| 225 | #endif |
| 226 | |
| 227 | WindowController::get().setup(); |
| 228 | auto windowData = WindowController::get().getWindowData(); |
| 229 | glfwSetFramebufferSizeCallback(windowData.window, framebufferSizeCallback); |
| 230 | glfwSwapInterval(1); //enable vsync |
| 231 | ImGui::CreateContext(); |
| 232 | ImPlot::CreateContext(); |
| 233 | ImGui_ImplGlfw_InitForOpenGL(windowData.window, true); //setup Platform/Renderer back-ends |
| 234 | ImGui_ImplOpenGL3_Init(glslVersion); |
| 235 | } |
| 236 | |
| 237 | void _MainWindow::initGlad() |
| 238 | { |
nothing calls this directly
no test coverage detected