diff options
| author | 3gg <3gg@shellblade.net> | 2024-06-15 11:43:47 -0700 |
|---|---|---|
| committer | 3gg <3gg@shellblade.net> | 2024-06-15 11:43:47 -0700 |
| commit | bc11af703e622dcc95ac337ad1a68db2d4cc16c0 (patch) | |
| tree | ec2ad303bb5a9ef1983b3e2f6fe88aec25a8d4a5 | |
| parent | 6dedc3c72f0772bee98a3e2dd01430603e8b2d58 (diff) | |
Move glad initialization to gfx-app.
| -rw-r--r-- | app/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | app/contrib/glad.zip (renamed from gfx/contrib/glad.zip) | bin | 369997 -> 369997 bytes | |||
| -rw-r--r-- | app/contrib/glad/CMakeLists.txt (renamed from gfx/contrib/glad/CMakeLists.txt) | 0 | ||||
| -rw-r--r-- | app/contrib/glad/README.md (renamed from gfx/contrib/glad/README.md) | 0 | ||||
| -rw-r--r-- | app/contrib/glad/include/KHR/khrplatform.h (renamed from gfx/contrib/glad/include/KHR/khrplatform.h) | 0 | ||||
| -rw-r--r-- | app/contrib/glad/include/glad/glad.h (renamed from gfx/contrib/glad/include/glad/glad.h) | 0 | ||||
| -rw-r--r-- | app/contrib/glad/src/glad.c (renamed from gfx/contrib/glad/src/glad.c) | 0 | ||||
| -rw-r--r-- | app/include/gfx/app.h | 18 | ||||
| -rw-r--r-- | app/src/app.c | 8 | ||||
| -rw-r--r-- | game/src/game.c | 14 | ||||
| -rw-r--r-- | gfx/CMakeLists.txt | 3 | ||||
| -rw-r--r-- | gfx/src/gfx.c | 5 |
12 files changed, 32 insertions, 19 deletions
diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index 7e60351..4db314d 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | cmake_minimum_required(VERSION 3.0) | 1 | cmake_minimum_required(VERSION 3.0) |
| 2 | 2 | ||
| 3 | add_subdirectory(contrib/glad) | ||
| 4 | |||
| 3 | project(gfx-app) | 5 | project(gfx-app) |
| 4 | 6 | ||
| 5 | add_library(gfx-app | 7 | add_library(gfx-app |
| @@ -9,6 +11,7 @@ target_include_directories(gfx-app PUBLIC | |||
| 9 | include/) | 11 | include/) |
| 10 | 12 | ||
| 11 | target_link_libraries(gfx-app PUBLIC | 13 | target_link_libraries(gfx-app PUBLIC |
| 14 | glad | ||
| 12 | glfw | 15 | glfw |
| 13 | log | 16 | log |
| 14 | timer) | 17 | timer) |
diff --git a/gfx/contrib/glad.zip b/app/contrib/glad.zip index d5d3564..d5d3564 100644 --- a/gfx/contrib/glad.zip +++ b/app/contrib/glad.zip | |||
| Binary files differ | |||
diff --git a/gfx/contrib/glad/CMakeLists.txt b/app/contrib/glad/CMakeLists.txt index 08b550c..08b550c 100644 --- a/gfx/contrib/glad/CMakeLists.txt +++ b/app/contrib/glad/CMakeLists.txt | |||
diff --git a/gfx/contrib/glad/README.md b/app/contrib/glad/README.md index a0c9908..a0c9908 100644 --- a/gfx/contrib/glad/README.md +++ b/app/contrib/glad/README.md | |||
diff --git a/gfx/contrib/glad/include/KHR/khrplatform.h b/app/contrib/glad/include/KHR/khrplatform.h index dd22d92..dd22d92 100644 --- a/gfx/contrib/glad/include/KHR/khrplatform.h +++ b/app/contrib/glad/include/KHR/khrplatform.h | |||
diff --git a/gfx/contrib/glad/include/glad/glad.h b/app/contrib/glad/include/glad/glad.h index 0556552..0556552 100644 --- a/gfx/contrib/glad/include/glad/glad.h +++ b/app/contrib/glad/include/glad/glad.h | |||
diff --git a/gfx/contrib/glad/src/glad.c b/app/contrib/glad/src/glad.c index 4a3cf51..4a3cf51 100644 --- a/gfx/contrib/glad/src/glad.c +++ b/app/contrib/glad/src/glad.c | |||
diff --git a/app/include/gfx/app.h b/app/include/gfx/app.h index ffff4bc..3843d92 100644 --- a/app/include/gfx/app.h +++ b/app/include/gfx/app.h | |||
| @@ -60,6 +60,10 @@ typedef enum Key { | |||
| 60 | KeyZ, | 60 | KeyZ, |
| 61 | } Key; | 61 | } Key; |
| 62 | 62 | ||
| 63 | #ifdef __cplusplus | ||
| 64 | extern "C" { | ||
| 65 | #endif | ||
| 66 | |||
| 63 | /// Create a window with an OpenGL context and run the main loop. | 67 | /// Create a window with an OpenGL context and run the main loop. |
| 64 | bool gfx_app_run(const GfxAppDesc*, const GfxAppCallbacks*); | 68 | bool gfx_app_run(const GfxAppDesc*, const GfxAppCallbacks*); |
| 65 | 69 | ||
| @@ -69,6 +73,10 @@ void gfx_app_get_mouse_position(double* x, double* y); | |||
| 69 | /// Return true if the given key is pressed. | 73 | /// Return true if the given key is pressed. |
| 70 | bool gfx_is_key_pressed(Key); | 74 | bool gfx_is_key_pressed(Key); |
| 71 | 75 | ||
| 76 | #ifdef __cplusplus | ||
| 77 | } // extern "C" | ||
| 78 | #endif | ||
| 79 | |||
| 72 | /// Define a main function that initializes and puts the application in a loop. | 80 | /// Define a main function that initializes and puts the application in a loop. |
| 73 | /// See also: gfx_app_run(). | 81 | /// See also: gfx_app_run(). |
| 74 | #define GFX_APP_MAIN(WIDTH, HEIGHT, MAX_FPS, TITLE) \ | 82 | #define GFX_APP_MAIN(WIDTH, HEIGHT, MAX_FPS, TITLE) \ |
| @@ -86,10 +94,10 @@ bool gfx_is_key_pressed(Key); | |||
| 86 | .app_state = &app_state, \ | 94 | .app_state = &app_state, \ |
| 87 | }, \ | 95 | }, \ |
| 88 | &(GfxAppCallbacks){ \ | 96 | &(GfxAppCallbacks){ \ |
| 89 | .init = (GfxAppInit)app_init, \ | 97 | .init = (GfxAppInit)Init, \ |
| 90 | .update = (GfxAppUpdate)app_update, \ | 98 | .shutdown = (GfxAppShutdown)Shutdown, \ |
| 91 | .render = (GfxAppRender)app_render, \ | 99 | .update = (GfxAppUpdate)Update, \ |
| 92 | .resize = (GfxAppResize)app_resize, \ | 100 | .render = (GfxAppRender)Render, \ |
| 93 | .shutdown = (GfxAppShutdown)app_end}); \ | 101 | .resize = (GfxAppResize)Resize}); \ |
| 94 | return 0; \ | 102 | return 0; \ |
| 95 | } | 103 | } |
diff --git a/app/src/app.c b/app/src/app.c index b6d10ca..1e636af 100644 --- a/app/src/app.c +++ b/app/src/app.c | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | #include <gfx/app.h> | 1 | #include <gfx/app.h> |
| 2 | 2 | ||
| 3 | #include <glad/glad.h> | ||
| 4 | |||
| 3 | #include <GLFW/glfw3.h> | 5 | #include <GLFW/glfw3.h> |
| 4 | #include <log/log.h> | 6 | #include <log/log.h> |
| 5 | #include <timer.h> | 7 | #include <timer.h> |
| @@ -110,6 +112,12 @@ bool gfx_app_run(const GfxAppDesc* desc, const GfxAppCallbacks* callbacks) { | |||
| 110 | } | 112 | } |
| 111 | glfwMakeContextCurrent(g_gfx_app.window); | 113 | glfwMakeContextCurrent(g_gfx_app.window); |
| 112 | 114 | ||
| 115 | // Load GL before calling the application init clalback. | ||
| 116 | if (!gladLoadGL()) { | ||
| 117 | LOGE("Failed loading glad!"); | ||
| 118 | return 0; | ||
| 119 | } | ||
| 120 | |||
| 113 | // Initialize the application's state before setting any callbacks. | 121 | // Initialize the application's state before setting any callbacks. |
| 114 | if (!(*g_gfx_app.callbacks.init)( | 122 | if (!(*g_gfx_app.callbacks.init)( |
| 115 | g_gfx_app.app_state, desc->argc, desc->argv)) { | 123 | g_gfx_app.app_state, desc->argc, desc->argv)) { |
diff --git a/game/src/game.c b/game/src/game.c index 425119f..10c69aa 100644 --- a/game/src/game.c +++ b/game/src/game.c | |||
| @@ -115,9 +115,9 @@ static void resize_plugin(Game* game, int width, int height) { | |||
| 115 | } | 115 | } |
| 116 | } | 116 | } |
| 117 | 117 | ||
| 118 | void app_end(Game* game); | 118 | static void Shutdown(Game* game); |
| 119 | 119 | ||
| 120 | bool app_init(Game* game, int argc, const char** argv) { | 120 | static bool Init(Game* game, int argc, const char** argv) { |
| 121 | assert(game); | 121 | assert(game); |
| 122 | 122 | ||
| 123 | if (argc <= 1) { | 123 | if (argc <= 1) { |
| @@ -170,11 +170,11 @@ bool app_init(Game* game, int argc, const char** argv) { | |||
| 170 | 170 | ||
| 171 | cleanup: | 171 | cleanup: |
| 172 | LOGE("Gfx error: %s", get_error()); | 172 | LOGE("Gfx error: %s", get_error()); |
| 173 | app_end(game); | 173 | Shutdown(game); |
| 174 | return false; | 174 | return false; |
| 175 | } | 175 | } |
| 176 | 176 | ||
| 177 | void app_end(Game* game) { | 177 | static void Shutdown(Game* game) { |
| 178 | assert(game); | 178 | assert(game); |
| 179 | shutdown_plugin(game); | 179 | shutdown_plugin(game); |
| 180 | if (game->gfx) { | 180 | if (game->gfx) { |
| @@ -188,7 +188,7 @@ void app_end(Game* game) { | |||
| 188 | } | 188 | } |
| 189 | } | 189 | } |
| 190 | 190 | ||
| 191 | void app_update(Game* game, double t, double dt) { | 191 | static void Update(Game* game, double t, double dt) { |
| 192 | plugin_engine_update(game->plugin_engine); | 192 | plugin_engine_update(game->plugin_engine); |
| 193 | if (plugin_reloaded(game->plugin)) { | 193 | if (plugin_reloaded(game->plugin)) { |
| 194 | shutdown_plugin(game); | 194 | shutdown_plugin(game); |
| @@ -203,14 +203,14 @@ void app_update(Game* game, double t, double dt) { | |||
| 203 | update_plugin(game, t, dt); | 203 | update_plugin(game, t, dt); |
| 204 | } | 204 | } |
| 205 | 205 | ||
| 206 | void app_render(const Game* game) { | 206 | static void Render(const Game* game) { |
| 207 | GfxCore* gfxcore = gfx_get_core(game->gfx); | 207 | GfxCore* gfxcore = gfx_get_core(game->gfx); |
| 208 | gfx_start_frame(gfxcore); | 208 | gfx_start_frame(gfxcore); |
| 209 | render_plugin(game); | 209 | render_plugin(game); |
| 210 | gfx_end_frame(gfxcore); | 210 | gfx_end_frame(gfxcore); |
| 211 | } | 211 | } |
| 212 | 212 | ||
| 213 | void app_resize(Game* game, int width, int height) { | 213 | static void Resize(Game* game, int width, int height) { |
| 214 | game->width = width; | 214 | game->width = width; |
| 215 | game->height = height; | 215 | game->height = height; |
| 216 | 216 | ||
diff --git a/gfx/CMakeLists.txt b/gfx/CMakeLists.txt index 7aa118b..7d629dc 100644 --- a/gfx/CMakeLists.txt +++ b/gfx/CMakeLists.txt | |||
| @@ -4,7 +4,6 @@ include(cmake/shader.txt) | |||
| 4 | 4 | ||
| 5 | add_subdirectory(contrib/cgltf) | 5 | add_subdirectory(contrib/cgltf) |
| 6 | add_subdirectory(contrib/cgltf-tangents) | 6 | add_subdirectory(contrib/cgltf-tangents) |
| 7 | add_subdirectory(contrib/glad) | ||
| 8 | add_subdirectory(contrib/stb) | 7 | add_subdirectory(contrib/stb) |
| 9 | 8 | ||
| 10 | project(gfx) | 9 | project(gfx) |
| @@ -79,7 +78,7 @@ target_link_libraries(gfx PRIVATE | |||
| 79 | cgltf | 78 | cgltf |
| 80 | cgltf-tangents | 79 | cgltf-tangents |
| 81 | error | 80 | error |
| 82 | glad | 81 | gfx-app |
| 83 | log | 82 | log |
| 84 | mempool | 83 | mempool |
| 85 | shaders | 84 | shaders |
diff --git a/gfx/src/gfx.c b/gfx/src/gfx.c index 36020df..cd2ac90 100644 --- a/gfx/src/gfx.c +++ b/gfx/src/gfx.c | |||
| @@ -19,11 +19,6 @@ typedef struct Gfx { | |||
| 19 | } Gfx; | 19 | } Gfx; |
| 20 | 20 | ||
| 21 | Gfx* gfx_init(void) { | 21 | Gfx* gfx_init(void) { |
| 22 | if (!gladLoadGL()) { | ||
| 23 | LOGE("Failed loading glad!"); | ||
| 24 | return 0; | ||
| 25 | } | ||
| 26 | |||
| 27 | Gfx* gfx = calloc(1, sizeof(Gfx)); | 22 | Gfx* gfx = calloc(1, sizeof(Gfx)); |
| 28 | if (!gfx) { | 23 | if (!gfx) { |
| 29 | return 0; | 24 | return 0; |
