X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=vg.h;h=919f6f3b878049b68f55afb749eddf904d7c37c1;hb=fac9f6fff674421f27fa4f4c1d2844998f0003d6;hp=aa86ab547a27e3cb84d106b0154c6f36246bdc54;hpb=ee7f1a82603a356e896f28416eed25d3c9008430;p=vg.git diff --git a/vg.h b/vg.h index aa86ab5..919f6f3 100644 --- a/vg.h +++ b/vg.h @@ -98,6 +98,12 @@ static void vg_post_update(void); static void vg_render(void); static void vg_gui(void); +enum quality_profile{ + k_quality_profile_high = 0, + k_quality_profile_low = 1, + k_quality_profile_min = 2 +}; + struct vg{ /* Engine sync */ SDL_Window *window; @@ -128,7 +134,11 @@ struct vg{ int display_refresh_rate, fps_limit, - vsync; + vsync, + screen_mode, + display_index; + + int settings_open; enum vsync_feature{ k_vsync_feature_disabled=0, @@ -138,7 +148,7 @@ struct vg{ } vsync_feature; - double mouse_pos[2]; + i32 mouse_pos[2]; v2f mouse_delta, mouse_wheel; @@ -166,12 +176,13 @@ struct vg{ engine_stage; /* graphics */ +#ifdef VG_3D m4x4f pv; - enum quality_profile{ - k_quality_profile_high = 0, - k_quality_profile_low = 1, - } - quality_profile; +#else + m3x3f pv; +#endif + + i32 quality_profile; float loader_ring; GLuint tex_missing; @@ -244,6 +255,7 @@ static void vg_checkgl( const char *src_info ); #include "vg_lines.h" #include "vg_loader.h" #include "vg_opt.h" +#include "vg_settings_menu.h" /* Diagnostic */ static struct vg_profile vg_prof_update = {.name="update()"}, @@ -396,8 +408,7 @@ static void _vg_process_events(void) } } - vg.mouse_pos[0] += vg.mouse_delta[0]; - vg.mouse_pos[1] += vg.mouse_delta[1]; + SDL_GetMouseState( &vg.mouse_pos[0], &vg.mouse_pos[1] ); } static void _vg_gameloop_update(void) @@ -453,21 +464,24 @@ static void _vg_gameloop_render(void) } else vg_gui(); + if( vg.settings_open ) + vg_settings_gui(); + /* vg tools */ #ifndef VG_NO_AUDIO audio_debug_ui( vg.pv ); #endif /* profiling */ - int frame_target = vg.display_refresh_rate; - if( vg.fps_limit > 0 ) frame_target = vg.fps_limit; - vg_profile_drawn( - (struct vg_profile *[]){ - &vg_prof_update,&vg_prof_render,&vg_prof_swap}, 3, - (1.0f/(float)frame_target)*1000.0f, - (ui_rect){ 4, 4, 250, 0 }, 0 - ); if( vg_profiler ){ + int frame_target = vg.display_refresh_rate; + if( vg.fps_limit > 0 ) frame_target = vg.fps_limit; + vg_profile_drawn( + (struct vg_profile *[]){ + &vg_prof_update,&vg_prof_render,&vg_prof_swap}, 3, + (1.0f/(float)frame_target)*1000.0f, + (ui_rect){ 4, 4, 250, 0 }, 0, 0 + ); char perf[256]; snprintf( perf, 255, @@ -494,6 +508,20 @@ static void _vg_gameloop_render(void) vg_profile_end( &vg_prof_render ); } +static void aaaaaaaaaaaaaaaaa( ui_rect r ){ + int frame_target = vg.display_refresh_rate; + if( !vg.vsync ) frame_target = vg.fps_limit; + + vg_profile_drawn( + (struct vg_profile *[]){ + &vg_prof_update,&vg_prof_render,&vg_prof_swap}, 3, + (1.0f/(f32)frame_target)*1500.0f, + r, 0, 1 + ); + + ui_fill( (ui_rect){ r[0], r[1] + (r[3]*2)/3, r[2], 1 }, ui_colour(k_ui_fg) ); +} + static void vg_changevsync(void){ if( vg.vsync && (vg.vsync_feature != k_vsync_feature_error) ){ /* turn on vsync if not enabled */ @@ -537,7 +565,7 @@ static void vg_changevsync(void){ } static int vg_framefilter( double dt ){ - if( vg.fps_limit < 25 ) vg.fps_limit = 25; + if( vg.fps_limit < 24 ) vg.fps_limit = 24; if( vg.fps_limit > 300 ) vg.fps_limit = 300; double min_frametime = 1.0/(double)vg.fps_limit; @@ -731,8 +759,8 @@ static void _vg_init_window( const char *window_name ) vg.window_y = video_mode.h; #ifdef VG_DEVWINDOW - vg.window_x = 1200; - vg.window_y = 880; + vg.window_x = 1280; + vg.window_y = 720; #endif #ifndef _WIN32 @@ -752,6 +780,7 @@ static void _vg_init_window( const char *window_name ) SDL_WINDOW_BORDERLESS|SDL_WINDOW_OPENGL|SDL_WINDOW_INPUT_GRABBED ))){ SDL_SetWindowPosition( vg.window, video_mode.w-vg.window_x, 0 ); + vg.screen_mode = 2; } #else 0, 0, @@ -759,7 +788,8 @@ static void _vg_init_window( const char *window_name ) SDL_WINDOW_FULLSCREEN_DESKTOP | SDL_WINDOW_OPENGL | - SDL_WINDOW_INPUT_GRABBED + SDL_WINDOW_INPUT_GRABBED | + SDL_WINDOW_RESIZABLE ))) { if( SDL_SetWindowDisplayMode( vg.window, &video_mode ) ){ @@ -775,6 +805,8 @@ static void _vg_init_window( const char *window_name ) } SDL_RaiseWindow( vg.window ); + SDL_SetWindowMinimumSize( vg.window, 1280, 720 ); + SDL_SetWindowMaximumSize( vg.window, 4096, 4096 ); vg_info( "CreateContext\n" ); @@ -854,6 +886,7 @@ static void vg_enter( int argc, char *argv[], const char *window_name ){ vg_console_reg_var( "fps_limit", &vg.fps_limit, k_var_dtype_i32, 0 ); vg_console_reg_var( "vsync", &vg.vsync, k_var_dtype_i32, VG_VAR_PERSISTENT ); + vg_console_reg_cmd( "vg_settings", cmd_vg_settings_toggle, NULL ); _vg_init_window( window_name ); vg_async_init();