32 if (SDL_ScreenSaverEnabled())
34 SDL_DisableScreenSaver();
37 SDL_WindowFlags flags = SDL_WINDOW_OPENGL | SDL_WINDOW_INPUT_FOCUS | SDL_WINDOW_MOUSE_FOCUS | SDL_WINDOW_HIDDEN | SDL_WINDOW_HIGH_PIXEL_DENSITY;
40 flags |= SDL_WINDOW_FULLSCREEN;
46 flags |= SDL_WINDOW_MAXIMIZED;
52 flags |= SDL_WINDOW_MOUSE_GRABBED;
57 flags |= SDL_WINDOW_RESIZABLE;
60 SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 8);
61 SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 8);
62 SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
63 SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 8);
64 SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 32);
65 SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
66 SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);
67 SDL_GL_SetAttribute(SDL_GL_STENCIL_SIZE, 8);
68 SDL_GL_SetAttribute(SDL_GL_STEREO, 0);
69 SDL_GL_SetAttribute(SDL_GL_MULTISAMPLEBUFFERS, 0);
70 SDL_GL_SetAttribute(SDL_GL_MULTISAMPLESAMPLES, 0);
71 SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);
72 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 4);
73 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 6);
74 SDL_GL_SetAttribute(SDL_GL_CONTEXT_FLAGS, SDL_GL_CONTEXT_DEBUG_FLAG | SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG);
75 SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE);
76 SDL_GL_SetAttribute(SDL_GL_SHARE_WITH_CURRENT_CONTEXT, 0);
77 SDL_GL_SetAttribute(SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, 1);
78 SDL_GL_SetAttribute(SDL_GL_CONTEXT_RELEASE_BEHAVIOR, SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH);
79 SDL_GL_SetAttribute(SDL_GL_CONTEXT_RESET_NOTIFICATION, SDL_GL_CONTEXT_RESET_NO_NOTIFICATION);
89 if (gladLoadGLLoader((GLADloadproc)SDL_GL_GetProcAddress))
92 SDL_SetWindowAlwaysOnTop(
m_window,
false);
94 SDL_SetWindowFocusable(
m_window,
true);
95 SDL_SetWindowFullscreenMode(
m_window,
nullptr);
96 SDL_SetWindowKeyboardGrab(
m_window,
false);
97 SDL_SetWindowMinimumSize(
m_window, 640, 360);
98 SDL_SetWindowPosition(
m_window, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED);
101 glEnable(GL_DEBUG_OUTPUT);
102 glEnable(GL_DEBUG_OUTPUT_SYNCHRONOUS);
104 glDebugMessageCallback(
105 [](GLenum source, GLenum type, GLuint
id, GLenum severity, GLsizei length,
const GLchar* message,
const void* userParam) {
114 case GL_DEBUG_SEVERITY_HIGH:
117 case GL_DEBUG_SEVERITY_MEDIUM:
120 case GL_DEBUG_SEVERITY_LOW:
131 glDebugMessageControl(GL_DONT_CARE, GL_DONT_CARE, GL_DEBUG_SEVERITY_NOTIFICATION, 0,
nullptr, GL_FALSE);