140 |
140 |
141 static void asc_event_window_resized(Uint32 id, Sint32 width, Sint32 height) { |
141 static void asc_event_window_resized(Uint32 id, Sint32 width, Sint32 height) { |
142 CxIterator iter = cxListIterator(asc_context.windows); |
142 CxIterator iter = cxListIterator(asc_context.windows); |
143 cx_foreach(AscWindow*, w, iter) { |
143 cx_foreach(AscWindow*, w, iter) { |
144 if (w->id == id) { |
144 if (w->id == id) { |
145 w->width = width; |
145 w->dimensions.width = width; |
146 w->height = height; |
146 w->dimensions.height = height; |
147 return; |
147 return; |
148 } |
148 } |
149 } |
149 } |
150 } |
150 } |
151 |
151 |
184 } |
184 } |
185 |
185 |
186 void asc_window_settings_init_defaults(AscWindowSettings* settings) { |
186 void asc_window_settings_init_defaults(AscWindowSettings* settings) { |
187 settings->depth_size = 24; |
187 settings->depth_size = 24; |
188 settings->vsync = 1; |
188 settings->vsync = 1; |
189 settings->width = 800; |
189 settings->dimensions.width = 800; |
190 settings->height = 600; |
190 settings->dimensions.height = 600; |
191 settings->fullscreen = 0; |
191 settings->fullscreen = 0; |
192 settings->gl_major_version = 3; |
192 settings->gl_major_version = 3; |
193 settings->gl_minor_version = 3; |
193 settings->gl_minor_version = 3; |
194 settings->title = "Ascended Window"; |
194 settings->title = "Ascended Window"; |
195 } |
195 } |
200 |
200 |
201 window->window = SDL_CreateWindow( |
201 window->window = SDL_CreateWindow( |
202 settings->title, |
202 settings->title, |
203 SDL_WINDOWPOS_CENTERED, |
203 SDL_WINDOWPOS_CENTERED, |
204 SDL_WINDOWPOS_CENTERED, |
204 SDL_WINDOWPOS_CENTERED, |
205 settings->width, |
205 settings->dimensions.width, |
206 settings->height, |
206 settings->dimensions.height, |
207 flags |
207 flags |
208 ); |
208 ); |
209 if (window->window == NULL) { |
209 if (window->window == NULL) { |
210 asc_error(SDL_GetError()); |
210 asc_error(SDL_GetError()); |
211 return; |
211 return; |
212 } |
212 } |
213 |
213 |
214 window->id = SDL_GetWindowID(window->window); |
214 window->id = SDL_GetWindowID(window->window); |
215 SDL_GetWindowSize(window->window, &window->width, &window->height); |
215 SDL_GetWindowSize(window->window, |
|
216 &window->dimensions.width, |
|
217 &window->dimensions.height |
|
218 ); |
216 |
219 |
217 SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); |
220 SDL_GL_SetAttribute(SDL_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_CORE); |
218 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, settings->gl_major_version); |
221 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, settings->gl_major_version); |
219 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, settings->gl_minor_version); |
222 SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, settings->gl_minor_version); |
220 SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, settings->depth_size); |
223 SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, settings->depth_size); |
278 } |
281 } |
279 |
282 |
280 void asc_window_sync(AscWindow const* window) { |
283 void asc_window_sync(AscWindow const* window) { |
281 SDL_GL_MakeCurrent(window->window, window->glctx); |
284 SDL_GL_MakeCurrent(window->window, window->glctx); |
282 SDL_GL_SwapWindow(window->window); |
285 SDL_GL_SwapWindow(window->window); |
283 glViewport(0, 0, window->width, window->height); |
286 glViewport(0, 0, window->dimensions.width, window->dimensions.height); |
284 glClearColor(0.0f, 0.0f, 0.0f, 1.0f); |
287 glClearColor(0.0f, 0.0f, 0.0f, 1.0f); |
285 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |
288 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); |
286 } |
289 } |