hot reload argument

This commit is contained in:
2025-09-12 22:40:00 +02:00
parent ff0a4ebdae
commit b7aa658e50
5 changed files with 15 additions and 9 deletions
+1 -1
View File
@@ -12,7 +12,7 @@ build:
gcc -Wall -Wextra src/*.c src/*.h -lglfw -lGL -lm -Iinclude -ldl -o build/$(TARGET)
run: build
./build/forge --frag=./shaders/frag.glsl
./build/forge --hot-reload --frag=./shaders/frag.glsl
.PHONY: install
install: build
+4 -3
View File
@@ -48,13 +48,14 @@ make install
## CLI arguments
```txt
usage: forge [--help] [-v]
usage: forge [-h] [-v] [-hr] [-s=SCREEN] [-f=FRAG_PATH]
Fusion Of Real-time Generative Effects.
options:
--help show this help message and exit
-h, --help show this help message and exit
-v, --version print version
-hr, --hot-reload hot reload of shaders scripts
-s, --screen output screen number (default: primary)
-f, --frag fragment shader path (default: TODO)
```
@@ -90,7 +91,7 @@ make -f Makefile.dev release-arch
- [x] Read fragment shader from file
- [ ] Handle compilation errors
- [x] Minimal working fragment sample
- [x] Hot-reload fragment shader
- [x] Hot-reload fragment shader (with arg)
- [x] Specify fragment shader path
- [x] Force fullscreen
- [x] Select screen as argument / config
+8 -4
View File
@@ -9,15 +9,17 @@
void print_help(int status_code) {
puts(PACKAGE " " VERSION "\n\n"
"usage: " PACKAGE " "
"[--help] "
"[-h] "
"[-v] "
"[-hr] "
"[-s=SCREEN] "
"[-f=FRAG_PATH] "
"\n\n"
"Fusion Of Real-time Generative Effects.\n\n"
"options:\n"
" --help show this help message and exit\n"
" -h, --help show this help message and exit\n"
" -v, --version print version\n"
" -hr, --hot-reload hot reload of shaders scripts\n"
" -s, --screen output screen number (default: primary)\n"
" -f, --frag fragment shader path (default: TODO)\n");
exit(status_code);
@@ -68,7 +70,7 @@ unsigned char parse_uchar(char *arg, char *value) {
}
Parameters parse_args(int argc, char **argv) {
Parameters params = {0, 0};
Parameters params = {0, 0, false};
int i;
char *arg;
@@ -76,11 +78,13 @@ Parameters parse_args(int argc, char **argv) {
for (i = 1; i < argc; i++) {
arg = argv[i];
value = split_arg_value(arg);
if (is_arg(arg, "--help")) {
if (is_arg(arg, "-h") || is_arg(arg, "--help")) {
print_help(EXIT_SUCCESS);
} else if (is_arg(arg, "-v") || is_arg(arg, "--version")) {
puts(PACKAGE " " VERSION);
exit(EXIT_SUCCESS);
} else if (is_arg(arg, "-hr") || is_arg(arg, "--hot-reload")) {
params.hot_reload = true;
} else if (is_arg(arg, "-s") || is_arg(arg, "--screen")) {
params.screen = parse_uchar(arg, value);
} else if (is_arg(arg, "-f") || is_arg(arg, "--frag")) {
+1 -1
View File
@@ -199,7 +199,7 @@ void forge_run(Parameters params) {
}
while (!glfwWindowShouldClose(window)) {
if (should_update_file(&fragment_shader)) {
if (params.hot_reload && should_update_file(&fragment_shader)) {
update_file(&fragment_shader);
update_program(program, fragment_shader);
}
+1
View File
@@ -10,6 +10,7 @@
typedef struct Parameters {
unsigned char screen;
char *frag_path;
bool hot_reload;
} Parameters;
typedef struct Vertex {