#include "img.h" #include "mem_arena.h" #include "mem_utils.h" #include "obj.h" #include #include #include enum { TINY_EXIT_SUCCESS, TINY_EXIT_ARENA_INIT_FAILED, TINY_EXIT_IMAGE_INIT_FAILED, TINY_EXIT_MODEL_LOAD_FAILED, }; int main(void) { Arena *arena = NULL; if (!wapp_mem_arena_init(&arena, 10ul * 1024ul * 1024ul * 1024ul, WAPP_MEM_ALLOC_RESERVE, false)) { return TINY_EXIT_ARENA_INIT_FAILED; } Colour bg = {.r = 42, .g = 45, .b = 52, .a = 255}; Colour teal = {.r = 14, .g = 156, .b = 208, .a = 255}; Colour orange = {.r = 242, .g = 100, .b = 48, .a = 255}; Image img = {.width = 1200, .height = 1200}; if (!init_image(arena, &img)) { return TINY_EXIT_IMAGE_INIT_FAILED; } Model model = load_obj_file(arena, "resources/triangle.obj"); if (IS_NULL_MODEL(model)) { return TINY_EXIT_MODEL_LOAD_FAILED; } clear_image(&img, bg); render_model(&model, &img, teal, RENDER_TYPE_FILLED); render_model(&model, &img, orange, RENDER_TYPE_WIREFRAME); save_image(&img, "result.pam"); wapp_mem_arena_destroy(&arena); return TINY_EXIT_SUCCESS; }