#include "app.hpp" #include "video.hpp" extern "C" { #include "plat.h" #include "memory.h" } #define video_arena_size (1024 * 1024 * 16) #define per_frame_memory_size (1024 * 1024) struct C2 : public App { Device* dev; void on_resize() override { dev->on_resize(); } }; int main() { Arena video_arena; Device* dev; Shader* shader; C2* app = App::create("c2"); void* per_frame; app->running = 1; init_arena( &video_arena, arena_alloc(app->arena, video_arena_size), video_arena_size ); dev = Device::create(&video_arena, app); app->dev = dev; shader = dev->load_shader("data/triangle.csh"); per_frame = heap_alloc( dev->heap, per_frame_memory_size ); uint8_t r = 0; while (app->running) { Arena frame_arena; init_arena(&frame_arena, per_frame, per_frame_memory_size); app->begin(); dev->begin_frame(); Pipeline_Builder pb(&frame_arena); pb.begin_rp(); pb.rp_target(dev->get_backbuffer(), { r, 0x00, 0xff, 0xff }); Render_Pass& pass = pb.build_rp(); dev->get_ctx().submit(*dev, pass); r += 10; dev->present(); app->end(); } shader->destroy(dev); dev->destroy(); app->destroy(); }