update makefile

This commit is contained in:
sam 2024-09-02 17:33:46 +12:00
parent 72a3d60146
commit 7b80e06c04
5 changed files with 2935 additions and 102 deletions

View file

@ -40,25 +40,29 @@ else
endif
endif
.PHONY: shaders resources
.PHONY: shaders resources run clean bear
$(BINARY): shaders resources $(C_OBJ) $(OBJC_OBJ)
$(BINARY): $(SHADER_OBJ) $(RESOUCES_OBJ) $(RESOURCES_H) $(C_OBJ) $(OBJC_OBJ)
$(CC) $(C_OBJ) $(OBJC_OBJ) $(RESOURCES_OBJ) $(LDFLAGS) -o $(BINARY)
shaders: $(SHADER_OBJ)
@echo Shaders compiled
@echo "Shaders compiled"
resources:
@echo "// Generated resource file" > res/res.c
resources: $(RESOURCES_OBJ) $(RESOURCES_H)
@echo "Resources compiled"
$(RESOURCES_OBJ): $(RESOURCES_C) $(RESOURCE_FILES)
@echo "// Generated resource file" > $(RESOURCES_C)
$(foreach res, $(RESOURCE_FILES), xxd -i $(res) >> $(RESOURCES_C);)
$(CC) -o $(RESOURCES_OBJ) -c $(RESOURCES_C)
$(CC) -o $@ -c $(RESOURCES_C)
@echo "#ifndef __G_RESOURCES_H__" > $(RESOURCES_H)
@echo "#define __G_RESOURCES_H__" >> $(RESOURCES_H)
$(RESOURCES_H): $(RESOURCES_OBJ)
@echo "#ifndef __G_RESOURCES_H__" > $@
@echo "#define __G_RESOURCES_H__" >> $@
@nm -g -j $(RESOURCES_OBJ) | \
awk '{ if($$0 ~ /len$$/) { print "extern int " substr($$0, 2) ";" } else { print "extern char " substr($$0, 2) "[];" } }' >> $(RESOURCES_H)
@echo "#endif" >> $(RESOURCES_H)
@echo Resources compiled
awk '{ if($$0 ~ /len$$/) { print "extern int " substr($$0, 2) ";" } else { print "extern char " substr($$0, 2) "[];" } }' >> $@
@echo "#endif" >> $@
@echo "Resources compiled"
%.glsl.h: %.glsl
$(SHADERC) --input $< --output $@ $(SHADER_FLAGS)

BIN
gear Executable file

Binary file not shown.

9
include/gear/resources.h Normal file
View file

@ -0,0 +1,9 @@
#ifndef __G_RESOURCES_H__
#define __G_RESOURCES_H__
extern char res_OpenSans_Regular_ttf[];
extern int res_OpenSans_Regular_ttf_len;
extern char res_happi2_jpg[];
extern int res_happi2_jpg_len;
extern char res_happi_jpg[];
extern int res_happi_jpg_len;
#endif

2911
res/res.c

File diff suppressed because it is too large Load diff

View file

@ -1,91 +0,0 @@
/*#include "gear/camera.h"
#include "gear/graphics/color.h"
#include "gear/graphics/models.h"
#include <gear/images.h>
#include <gear/graphics/textures.h>
#include <gear/graphics/renderer.h>
#include <gear/graphics/pipeline.h>
#include <sokol/sokol_app.h>
#include <sokol/sokol_gfx.h>
#include <sokol/sokol_log.h>
#include <sokol/sokol_glue.h>
#include <slibs/slibs.h>
#include <HandmadeMath/HandmadeMath.h>
#include <shaders/transform.glsl.h>
g_renderer* renderer;
g_camera* camera;
g_model* cube;
g_renderer_object obj;
static void init(void) {
sg_setup(&(sg_desc){
.environment = sglue_environment(),
.logger.func = slog_func,
});
renderer = g_renderer_create(G_CYAN);
camera = g_camera_create(HMM_V3(0.0f, 0.0f, -5.0f), HMM_V3(0.0f, 0.0f, 0.0f), 45.0f);
obj.bind.vertex_buffers[0] = cube->vertex_buffer;
obj.bind.index_buffer = cube->index_buffer;
g_texture* texture = g_texture_create_filtered(g_image_load("happi.jpg"), SG_FILTER_NEAREST, SG_FILTER_NEAREST);
obj.bind.fs.images[SLOT_tex] = texture->image;
obj.bind.fs.samplers[SLOT_smp] = texture->sampler;
sg_shader shd = sg_make_shader(transform_shader_desc(sg_query_backend()));
obj.pipeline = g_pipeline_create(shd, (sg_vertex_layout_state){
.attrs = {
[ATTR_vs_pos].format = SG_VERTEXFORMAT_FLOAT3,
[ATTR_vs_color0].format = SG_VERTEXFORMAT_UBYTE4N,
[ATTR_vs_texcoord0].format = SG_VERTEXFORMAT_SHORT2N,
}
});
}
float t = 0.0f;
void frame(void) {
t += sapp_frame_duration();
mat4 view_proj = g_camera_matrix(camera);
g_renderer_begin(renderer);
mat4 model = HMM_Rotate_RH(HMM_AngleDeg(0.0f), HMM_V3(1.0f, 0.0f, 0.0f));
model = HMM_Mul(model, HMM_Rotate_RH(HMM_AngleDeg(t * 10), HMM_V3(0.0f, 1.0f, 0.0f)));
mat4 mvp = HMM_Mul(view_proj, model);
vs_params_t params = {
.mvp = mvp,
.texture_scale = HMM_V2(1.0f, 1.0f),
};
g_pipeline_bind(renderer, obj.pipeline);
sg_apply_bindings(&obj.bind);
sg_apply_uniforms(SG_SHADERSTAGE_VS, SLOT_vs_params, SG_RANGE_REF(params));
g_renderer_draw(renderer, obj, cube->indices.size);
g_renderer_end(renderer);
}
void cleanup(void) {
sg_shutdown();
}
sapp_desc sokol_main(int argc, char* argv[]) {
(void)argc; (void)argv;
return (sapp_desc){
.init_cb = init,
.frame_cb = frame,
.cleanup_cb = cleanup,
.width = 640,
.height = 480,
.window_title = "Gear",
.icon.sokol_default = true,
.logger.func = slog_func,
.swap_interval = 0
};
}*/