72 data->f3(data->memory, data->additional_data); |
72 data->f3(data->memory, data->additional_data); |
73 break; |
73 break; |
74 } |
74 } |
75 } |
75 } |
76 |
76 |
|
77 AscGLContextSettings asc_gl_context_settings_default(int gl_major_version, int gl_minor_version) { |
|
78 return (AscGLContextSettings) { |
|
79 .gl_major_version = gl_major_version, |
|
80 .gl_minor_version = gl_minor_version, |
|
81 .depth_size = 24, |
|
82 .vsync = true, |
|
83 .fullscreen = false, |
|
84 }; |
|
85 } |
|
86 |
77 bool asc_gl_context_initialize( |
87 bool asc_gl_context_initialize( |
78 AscGLContext *ctx, |
88 AscGLContext *ctx, |
79 SDL_Window *window, |
89 SDL_Window *window, |
80 const AscGLContextSettings *settings |
90 const AscGLContextSettings *settings |
81 ) { |
91 ) { |
89 ctx->window = window; |
99 ctx->window = window; |
90 |
100 |
91 glewExperimental = GL_TRUE; |
101 glewExperimental = GL_TRUE; |
92 GLenum err = glewInit(); |
102 GLenum err = glewInit(); |
93 if (err == GLEW_OK) { |
103 if (err == GLEW_OK) { |
94 SDL_GL_SetSwapInterval(settings->vsync); |
104 SDL_GL_SetSwapInterval(settings->vsync ? 1 : 0); |
95 |
105 |
96 glClearColor(0.0f, 0.0f, 0.0f, 1.0f); |
106 glClearColor(0.0f, 0.0f, 0.0f, 1.0f); |
97 glEnable(GL_DEBUG_OUTPUT); |
107 glEnable(GL_DEBUG_OUTPUT); |
98 glDebugMessageCallback(asc_gl_debug_callback, NULL); |
108 glDebugMessageCallback(asc_gl_debug_callback, NULL); |
99 |
109 |