int main( int argc, char** argv ) { if( argc < 4 ) { printf( "Usage:\n\tcnwy <fps> <cols> <rows>\n" ); } int fps = atoi( argv[1] ); int cols = atoi( argv[2] ); int rows = atoi( argv[3] ); float wait = ( 60.0 / ( double ) fps ); conway c = conway_init( cols, rows, 1000 ); conway_ui ui = ui_init( cols, rows ); while( true ) { conway_tick( c ); ui_render( ui, conway_get_grid( c ) ); sleep( wait ); } return EXIT_SUCCESS; }
void screen_render(struct gfx_t* gfx, const struct camera_t* camera) { ui_render(&ui, gfx, camera); const screen_t* screen = get_active_screen(); if (screen != NULL && screen->render != NULL) { (*screen->render)(gfx, camera); } }
int main(int argc, char *argv[]) { if (argc > 2) { print_usage_and_exit(); } difficulty_t level = MEDIUM; if (argc == 2) { if (!strcmp(argv[1], "easy")) { level = EASY; } else if (!strcmp(argv[1], "medium")) { level = MEDIUM; } else if (!strcmp(argv[1], "hard")) { level = HARD; } else { print_usage_and_exit(); } } grid_t* grid = init_game_grid(level); ui_init(grid->tiles_per_row * ICON_SIZE); load_icons(grid); srand(time(0)); int done = 0; waiting = 0; previous_tile = NULL; ui_event_t event; while (!done) { while (ui_poll_event(&event)) { switch (event.type) { case ui_event_quit: done = 1; break; case ui_event_click: if (waiting) { break; } int x = event.click.x; int y = event.click.y; clicked_tile = get_clicked_tile(grid, x, y); on_tile_click(); break; } } ui_draw_grid(grid); ui_render(); } ui_destroy(); return 0; }
int main(int argc, char **argv) { corange_init("../../core_assets"); sea_init(); int running = 1; SDL_Event event; while(running) { frame_begin(); while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_KEYDOWN: case SDL_KEYUP: if (event.key.keysym.sym == SDLK_ESCAPE) { running = 0; } if (event.key.keysym.sym == SDLK_PRINT) { graphics_viewport_screenshot(); } break; case SDL_QUIT: running = 0; break; } sea_event(event); ui_event(event); } sea_update(); ui_update(); sea_render(); ui_render(); SDL_GL_SwapBuffers(); frame_end(); } sea_finish(); corange_finish(); return 0; }
void metaballs_render() { static_object* s_podium = entity_get("podium"); camera* cam = entity_get("camera"); light* sun = entity_get("sun"); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); #ifdef MARCHING_CUBES shadow_mapper_begin(); shadow_mapper_render_static(s_podium); marching_cubes_render_shadows(sun); shadow_mapper_end(); forward_renderer_begin(); forward_renderer_render_static(s_podium); forward_renderer_render_light(sun); marching_cubes_render(wireframe, cam, sun); forward_renderer_end(); #endif #ifdef VOLUME_RENDERER volume_renderer_render(); #endif #ifndef VOLUME_RENDERER #ifndef MARCHING_CUBES particles_render(); #endif #endif ui_render(); SDL_GL_SwapBuffers(); }
void ui_run() { SDL_Event e; quit = false; while(!quit) { ui_render(true); while(SDL_PollEvent(&e) != 0) { if (midi_command_event != (Uint32) -1 && e.type == midi_command_event) { struct midi_event * me = e.user.data1; switch (me->type) { case MIDI_EVENT_SLIDER: set_slider_to(me->slider.index, me->slider.value, me->snap); break; case MIDI_EVENT_KEY:; SDL_KeyboardEvent fakekeyev; memset(&fakekeyev, 0, sizeof fakekeyev); fakekeyev.type = SDL_KEYDOWN; fakekeyev.state = SDL_PRESSED; fakekeyev.keysym.sym = me->key.keycode[0]; handle_key(&fakekeyev); break; } free(e.user.data1); free(e.user.data2); continue; } switch(e.type) { case SDL_QUIT: quit = true; break; case SDL_KEYDOWN: handle_key(&e.key); break; case SDL_MOUSEMOTION: mx = e.motion.x; my = e.motion.y; handle_mouse_move(); break; case SDL_MOUSEBUTTONDOWN: mx = e.button.x; my = e.button.y; switch(e.button.button) { case SDL_BUTTON_LEFT: handle_mouse_down(); break; } break; case SDL_MOUSEBUTTONUP: mx = e.button.x; my = e.button.y; switch(e.button.button) { case SDL_BUTTON_LEFT: handle_mouse_up(); break; } break; case SDL_TEXTINPUT: handle_text(e.text.text); break; } } for(int i=0; i<N_DECKS; i++) { deck_render(&deck[i]); } crossfader_render(&crossfader, deck[left_deck_selector].tex_output, deck[right_deck_selector].tex_output); ui_render(false); render_readback(&render); SDL_GL_SwapWindow(window); double cur_t = SDL_GetTicks(); double dt = cur_t - l_t; if(dt > 0) time += dt / 1000; l_t = cur_t; } }
int main(int argc, char **argv) { corange_init("../../core_assets"); scotland_init(); int running = 1; SDL_Event event; while(running) { frame_begin(); while(SDL_PollEvent(&event)) { switch(event.type){ case SDL_KEYDOWN: case SDL_KEYUP: if (event.key.keysym.sym == SDLK_ESCAPE) { running = 0; } if (event.key.keysym.sym == SDLK_PRINT) { graphics_viewport_screenshot(); } break; case SDL_QUIT: running = 0; break; } if (loading_resources) { ui_event(event); } else { scotland_event(event); ui_event(event); } } if (loading_resources) { ui_update(); } else { scotland_update(); ui_update(); } if (loading_resources) { glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT); ui_render(); } else { scotland_render(); ui_render(); } SDL_GL_SwapBuffers(); frame_end(); } scotland_finish(); corange_finish(); return 0; }
int main(int argc, char **argv) { #ifdef _WIN32 FILE* ctt = fopen("CON", "w" ); FILE* fout = freopen( "CON", "w", stdout ); FILE* ferr = freopen( "CON", "w", stderr ); #endif corange_init("../../assets_core"); graphics_viewport_set_size(1280, 720); graphics_viewport_set_title("Noise"); folder_load(P("./")); file_load(P("$CORANGE/textures/random.dds")); glClearColor(1.0, 0.0, 0.0, 1.0); ui_button* info_button = ui_elem_new("info_button", ui_button); ui_button_move(info_button, vec2_new(10, 10)); ui_button_resize(info_button, vec2_new(460,25)); ui_button_set_label(info_button, "Procedural texture from perlin noise and feedback functions"); ui_button* save_button = ui_elem_new("save_button", ui_button); ui_button_move(save_button, vec2_new(480, 10)); ui_button_resize(save_button, vec2_new(380,25)); ui_button_set_label(save_button, "Click Here to save tileable perlin noise to file"); ui_button_set_onclick(save_button, save_noise_to_file); ui_button* spinner_box = ui_elem_new("spinner_box", ui_button); ui_button_resize(spinner_box, vec2_new(32, 32)); ui_button_move(spinner_box, vec2_new(870, 7)); ui_button_set_label(spinner_box, ""); ui_spinner* save_spinner = ui_elem_new("save_spinner", ui_spinner); save_spinner->color = vec4_new(1,1,1,0); save_spinner->top_left = vec2_new(874, 11); save_spinner->bottom_right = vec2_add(save_spinner->top_left, vec2_new(24,24)); srand(time(NULL)); shader_time = (float)rand() / (RAND_MAX / 1000); bool running = true; while(running) { frame_begin(); SDL_Event event; while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_KEYDOWN: case SDL_KEYUP: if (event.key.keysym.sym == SDLK_ESCAPE) { running = 0; } if (event.key.keysym.sym == SDLK_PRINTSCREEN) { graphics_viewport_screenshot(); } break; case SDL_QUIT: running = 0; break; break; } ui_event(event); } shader_time += frame_time(); ui_update(); noise_render(); ui_render(); graphics_swap(); frame_end(); } SDL_WaitThread(save_thread, NULL); corange_finish(); return 0; }
int main(int argc, char **argv) { #ifdef _WIN32 FILE* ctt = fopen("CON", "w" ); FILE* fout = freopen( "CON", "w", stdout ); FILE* ferr = freopen( "CON", "w", stderr ); #endif corange_init("../../assets_core"); graphics_viewport_set_title("Teapot"); graphics_viewport_set_size(1280, 720); camera* cam = entity_new("camera", camera); cam->position = vec3_new(5, 5, 5); cam->target = vec3_new(0, 0, 0); teapot_shader = asset_hndl_new_load(P("./assets/teapot.mat")); teapot_object = asset_hndl_new_load(P("./assets/teapot.obj")); int running = 1; SDL_Event e = {0}; while(running) { frame_begin(); camera* cam = entity_get("camera"); while(SDL_PollEvent(&e)) { switch(e.type){ case SDL_KEYDOWN: case SDL_KEYUP: if (e.key.keysym.sym == SDLK_ESCAPE) { running = 0; } if (e.key.keysym.sym == SDLK_PRINTSCREEN) { graphics_viewport_screenshot(); } if (e.key.keysym.sym == SDLK_r && e.key.keysym.mod == KMOD_LCTRL) { asset_reload_all(); } break; case SDL_QUIT: running = 0; break; } camera_control_orbit(cam, e); ui_event(e); } ui_update(); glClearColor(0.25, 0.25, 0.25, 1.0); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glEnable(GL_DEPTH_TEST); shader_program* shader = material_first_program(asset_hndl_ptr(&teapot_shader)); shader_program_enable(shader); shader_program_set_mat4(shader, "world", mat4_id()); shader_program_set_mat4(shader, "view", camera_view_matrix(cam)); shader_program_set_mat4(shader, "proj", camera_proj_matrix(cam)); shader_program_set_texture(shader, "cube_beach", 0, asset_hndl_new_load(P("$CORANGE/water/cube_sea.dds"))); shader_program_set_vec3(shader, "camera_direction", camera_direction(cam)); renderable* r = asset_hndl_ptr(&teapot_object); for(int i=0; i < r->num_surfaces; i++) { renderable_surface* s = r->surfaces[i]; int mentry_id = min(i, ((material*)asset_hndl_ptr(&r->material))->num_entries-1); material_entry* me = material_get_entry(asset_hndl_ptr(&r->material), mentry_id); glBindBuffer(GL_ARRAY_BUFFER, s->vertex_vbo); shader_program_enable_attribute(shader, "vPosition", 3, 18, (void*)0); shader_program_enable_attribute(shader, "vNormal", 3, 18, (void*)(sizeof(float) * 3)); //shader_program_enable_attribute(shader, "vTangent", 3, 18, (void*)(sizeof(float) * 6)); //shader_program_enable_attribute(shader, "vBinormal", 3, 18, (void*)(sizeof(float) * 9)); //shader_program_enable_attribute(shader, "vTexcoord", 2, 18, (void*)(sizeof(float) * 12)); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, s->triangle_vbo); glDrawElements(GL_TRIANGLES, s->num_triangles * 3, GL_UNSIGNED_INT, (void*)0); shader_program_disable_attribute(shader, "vPosition"); shader_program_disable_attribute(shader, "vNormal"); //shader_program_disable_attribute(shader, "vTangent"); //shader_program_disable_attribute(shader, "vBinormal"); //shader_program_disable_attribute(shader, "vTexcoord"); glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0); glBindBuffer(GL_ARRAY_BUFFER, 0); } shader_program_disable(shader); glDisable(GL_DEPTH_TEST); ui_render(); graphics_swap(); frame_end(); } corange_finish(); return 0; }
int main(int argc, char **argv) { #ifdef _WIN32 FILE* ctt = fopen("CON", "w" ); FILE* fout = freopen( "CON", "w", stdout ); FILE* ferr = freopen( "CON", "w", stderr ); #endif /* Init Corange, pointing to the assets_core folder */ corange_init("../../assets_core"); graphics_viewport_set_title("Birdy"); graphics_viewport_set_size(800, 600); platformer_init(); /* Set the game running, create SDL_Event struct to monitor events */ bool running = 1; SDL_Event event; while(running) { /* Frame functions used to monitor frame times, FPS and other */ frame_begin(); while(SDL_PollEvent(&event)) { switch(event.type){ case SDL_KEYUP: /* Exit on ESCAPE and Screenshot on print screen */ if (event.key.keysym.sym == SDLK_ESCAPE) { running = false; } if (event.key.keysym.sym == SDLK_PRINTSCREEN) { graphics_viewport_screenshot(); } break; case SDL_QUIT: /* A quitting event such as pressing cross in top right corner */ running = false; break; } /* Also send this event off to the game and ui */ platformer_event(event); ui_event(event); } platformer_update(); ui_update(); platformer_render(); ui_render(); /* Flip the Screen Buffer. We've finished with this frame. */ graphics_swap(); /* This allows us to fix the framerate to 60 fps, even on my laptop with vsync broken */ frame_end(); } platformer_finish(); /* Corange will unload remaining assets and delete any remaining entities */ corange_finish(); return 0; }
int WINAPI WinMain(HINSTANCE h,HINSTANCE hprev,LPSTR cmdline,int n){ debug_init(LOG_FILE); uk_log("windows build: %s",BUILD); int full_throttle=0; nCmdShow=n; hinstance=h; symbol_mode=LOAD; // FIXME temporary debug shit #else int main(int argc,char *argv[]){ debug_init(LOG_FILE); conf_init(CONFIG_PATH,veta_symbolsloaded); uk_log("build: %s",BUILD); int full_throttle=0; symbol_mode=LOAD; symbol_file=SYMBOLS_FILE; for(int i=1;i<argc;i++){ if(!strcmp("--dump-symbols",argv[i])){ symbol_mode=DUMP; i++; if(i>=argc) usage(argv[0]); symbol_file=argv[i]; uk_log("Dumping to %s\n",symbol_file); }else if(!strcmp("--load-symbols",argv[i])){ symbol_mode=LOAD; i++; if(i>=argc) usage(argv[0]); symbol_file=argv[i]; }else if(!strcmp("--zoom",argv[i])){ selection_mode=ZOOM; }else if(!strcmp("--highlight",argv[i])){ selection_mode=HIGHLIGHT; }else if(!strcmp("--graphicsopt",argv[i])){ full_throttle=1; }else{ usage(argv[0]); } } #endif // Set up callbacks ui_onevent(veta_handleevent); ui_onclick(ui2_handle_click); ui_onrelease(ui2_handle_release); ui_haskeymap(veta_symbolsloaded); ui_render(veta_render); int x,y; conf_read_position(&x,&y); ui_init(conf_get_int("width",WIDTH),conf_get_int("height",HEIGHT),x,y); if(!symbolsloaded){ fprintf(stderr,"Failed to load symbols\n"); exit(1); } // Set up low level graphics and load the keymap // ui_init(WIDTH,HEIGHT,st->x,st->y); ui2_init(); ui2_add_widgets(); ui_loop(full_throttle); return 1; }