First pass of window manager file

This commit is contained in:
Warwick 2025-10-01 13:55:45 +01:00
parent 5a78f43e55
commit 05b0361c69
3 changed files with 15 additions and 14 deletions

View file

@ -14,8 +14,8 @@ const unsigned int SCR_HEIGHT = 600;
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
wn_window wn_window = {0}; wn_window window = {0};
if (!wn_window_init(&wn_window)) { if (!wn_window_init(&window)) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize wn_window"); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize wn_window");
} }
@ -111,21 +111,16 @@ int main(int argc, char *argv[]) {
// Initialise camera // Initialise camera
Camera camera = Camera_default; Camera camera = Camera_default;
// Lock and hide mouse
SDL_SetWindowRelativeMouseMode(wn_window.window, true);
SDL_GetRelativeMouseState(NULL, NULL);
bool wants_running = true; bool wants_running = true;
while (wants_running) { while (wants_running) {
// TODO: Create event handler files
// handle input events while (SDL_PollEvent(&window.event)) {
while (SDL_PollEvent(&wn_window.event)) { switch (window.event.type) {
switch (wn_window.event.type) {
case SDL_EVENT_QUIT: case SDL_EVENT_QUIT:
wants_running = false; wants_running = false;
break; break;
case SDL_EVENT_KEY_DOWN: case SDL_EVENT_KEY_DOWN:
if (wn_window.event.key.key == SDLK_ESCAPE) { if (window.event.key.key == SDLK_ESCAPE) {
wants_running = false; wants_running = false;
} }
break; break;
@ -155,7 +150,7 @@ int main(int argc, char *argv[]) {
glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0); glDrawElements(GL_TRIANGLES, 6, GL_UNSIGNED_INT, 0);
// glBindVertexArray(0); // no need to unbind it every time // glBindVertexArray(0); // no need to unbind it every time
SDL_GL_SwapWindow(wn_window.window); wn_swapwindow(&window);
} }
glDeleteVertexArrays(1, &VAO); glDeleteVertexArrays(1, &VAO);
@ -163,7 +158,7 @@ int main(int argc, char *argv[]) {
glDeleteBuffers(1, &EBO); glDeleteBuffers(1, &EBO);
glDeleteProgram(shaderProgram); glDeleteProgram(shaderProgram);
wn_window_deinit(&wn_window); wn_window_deinit(&window);
return EXIT_SUCCESS; return EXIT_SUCCESS;
} }

View file

@ -43,6 +43,10 @@ bool wn_window_init(wn_window *window) {
"Couldn't make glcontext current: %s", SDL_GetError()); "Couldn't make glcontext current: %s", SDL_GetError());
} }
// hide and lock mouse
SDL_SetWindowRelativeMouseMode(window->window, true);
SDL_GetRelativeMouseState(NULL, NULL);
return true; return true;
} }
@ -51,3 +55,5 @@ void wn_window_deinit(wn_window *window) {
SDL_DestroyWindow(window->window); SDL_DestroyWindow(window->window);
SDL_Quit(); SDL_Quit();
} }
void wn_swapwindow(wn_window *window) { SDL_GL_SwapWindow(window->window); }

View file

@ -16,4 +16,4 @@ typedef struct wn_window_s wn_window;
bool wn_window_init(wn_window *window); bool wn_window_init(wn_window *window);
void wn_window_deinit(wn_window *window); void wn_window_deinit(wn_window *window);
void wn_swapwindow(wn_window *); void wn_swapwindow(wn_window *window);