Skip to content

Commit

Permalink
wait_frame теперь устанавливается
Browse files Browse the repository at this point in the history
  • Loading branch information
HPW-dev committed Jun 15, 2024
1 parent 75cf979 commit d3240aa
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 42 deletions.
10 changes: 5 additions & 5 deletions src/game/scene/scene-graphic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ void set_default() {
graphic::blur_quality_mul = 1.0;
graphic::cpu_safe = false;
graphic::disable_heat_distort_while_lag = true;
graphic::wait_frame = true;
graphic::wait_frame_bak = graphic::wait_frame = true;
graphic::double_buffering = true;
graphic::enable_heat_distort = false;
graphic::enable_light = true;
Expand All @@ -83,7 +83,7 @@ void set_high_plus_stream() {
graphic::blur_quality_mul = 0.5;
graphic::cpu_safe = false;
graphic::disable_heat_distort_while_lag = false;
graphic::wait_frame = false;
graphic::wait_frame_bak = graphic::wait_frame = false;
graphic::double_buffering = true;
graphic::enable_heat_distort = true;
graphic::enable_light = true;
Expand All @@ -101,7 +101,7 @@ void set_low_pc() {
graphic::autoopt_timeout_max = 15;
graphic::blink_particles = true;
graphic::cpu_safe = false;
graphic::wait_frame = false;
graphic::wait_frame_bak = graphic::wait_frame = false;
graphic::double_buffering = true;
graphic::enable_heat_distort = false;
graphic::enable_light = false;
Expand All @@ -121,7 +121,7 @@ void set_high_quality() {
graphic::blur_quality_mul = 0.5;
graphic::cpu_safe = true;
graphic::disable_heat_distort_while_lag = false;
graphic::wait_frame = true;
graphic::wait_frame_bak = graphic::wait_frame = true;
graphic::double_buffering = true;
graphic::enable_heat_distort = true;
graphic::enable_light = true;
Expand Down Expand Up @@ -368,7 +368,7 @@ void Scene_graphic::init_detailed_menu() {
new_shared<Menu_bool_item>(
get_locale_str("scene.graphic_menu.wait_frame"),
[]{ return graphic::wait_frame; },
[](bool new_val) { graphic::wait_frame = new_val; },
[](bool new_val) { graphic::wait_frame_bak = graphic::wait_frame = new_val; },
get_locale_str("scene.graphic_menu.description.wait_frame")
),
new_shared<Menu_bool_item>(
Expand Down
2 changes: 1 addition & 1 deletion src/game/util/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ void load_config() {

cauto sync_node = graphic_node["sync"];
graphic::set_vsync( sync_node.get_bool("vsync", graphic::get_vsync()) );
graphic::wait_frame = sync_node.get_bool("wait_frame", graphic::wait_frame);
graphic::wait_frame_bak = graphic::wait_frame = sync_node.get_bool("wait_frame", graphic::wait_frame);
graphic::set_disable_frame_limit( sync_node.get_bool("disable_frame_limit", graphic::get_disable_frame_limit()) );
graphic::set_target_fps( sync_node.get_int("target_fps", graphic::get_target_vsync_fps()) );
graphic::cpu_safe = sync_node.get_bool("cpu_safe", graphic::cpu_safe);
Expand Down
7 changes: 3 additions & 4 deletions src/game/util/sync.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ void set_target_fps(int val) {
set_bad_fps( 0.9 * (get_vsync() ? get_target_vsync_fps() : val) );
// при таком низком фпс, ожидание кадра просто заставляет всё лагать
if (val < 30)
graphic::wait_frame = false;
graphic::wait_frame_bak = graphic::wait_frame = false;
}

void set_target_vsync_fps(int val) {
Expand Down Expand Up @@ -125,15 +125,14 @@ void set_draw_time_autoopt_limit(const Delta_time val) {

void check_autoopt() {
cauto autoopt_trigger = hpw::real_dt >= graphic::get_draw_time_autoopt_limit();
static auto wait_frame_bak = graphic::wait_frame;

if (autoopt_trigger) {
graphic::render_lag = true;
wait_frame_bak = graphic::wait_frame;
graphic::wait_frame_bak = graphic::wait_frame;
graphic::wait_frame = false;
graphic::autoopt_timeout = graphic::autoopt_timeout_max;
} else {
graphic::wait_frame = wait_frame_bak;
graphic::wait_frame = graphic::wait_frame_bak;
}
}

Expand Down
59 changes: 29 additions & 30 deletions src/game/util/sync.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,39 +4,38 @@

namespace graphic {

constx int FAST_FWD_UPD_SPDUP = 10; // во сколько раз ускорить апдейт при скипе
constx int FAST_FWD_FRAMESKIP = 3; // сколько кадров пропускать при скипе
constx int FAST_FWD_UPD_SPDUP = 10; // во сколько раз ускорить апдейт при скипе
constx int FAST_FWD_FRAMESKIP = 3; // сколько кадров пропускать при скипе

inline bool wait_frame {true}; // ждать завершения отрисовки для стабильного апдейта
inline bool step_mode {false}; // режим пошагового выполнения
inline bool skip_cur_frame {false}; // пропустить отрисовку текущего кадра
inline unsigned frame_count {}; // столько кадров прошло с начала игры
inline Delta_time cur_fps {}; // текущий FPS
inline Delta_time soft_draw_time {}; // время отрисовки графики движком
inline Delta_time hard_draw_time {}; // время отрисовки графики системой
inline bool wait_frame {true}; // ждать завершения отрисовки для стабильного апдейта
inline bool wait_frame_bak {true};
inline bool step_mode {false}; // режим пошагового выполнения
inline bool skip_cur_frame {false}; // пропустить отрисовку текущего кадра
inline unsigned frame_count {}; // столько кадров прошло с начала игры
inline Delta_time cur_fps {}; // текущий FPS
inline Delta_time soft_draw_time {}; // время отрисовки графики движком
inline Delta_time hard_draw_time {}; // время отрисовки графики системой

// сеттеры приватных переменных:
void set_vsync(bool val);
void set_disable_frame_limit(bool val);
void set_fast_forward(bool val);
void set_target_fps(int val); // меняет лимит кадров
void set_target_vsync_fps(int val);
void set_target_frame_time(const Delta_time val);
void set_target_vsync_frame_time(const Delta_time val);
void set_bad_fps(const Delta_time val);
void set_draw_time_autoopt_limit(const Delta_time val);
void set_vsync(bool val);
void set_disable_frame_limit(bool val);
void set_fast_forward(bool val);
void set_target_fps(int val); // меняет лимит кадров
void set_target_vsync_fps(int val);
void set_target_frame_time(const Delta_time val);
void set_target_vsync_frame_time(const Delta_time val);
void set_bad_fps(const Delta_time val);
void set_draw_time_autoopt_limit(const Delta_time val);

// геттеры приватных переменных:
bool get_vsync();
bool get_disable_frame_limit();
bool get_fast_forward();
int get_target_fps();
int get_target_vsync_fps();
Delta_time get_target_frame_time();
Delta_time get_target_vsync_frame_time();
Delta_time get_bad_fps();
Delta_time get_draw_time_autoopt_limit();
bool get_vsync();
bool get_disable_frame_limit();
bool get_fast_forward();
int get_target_fps();
int get_target_vsync_fps();
Delta_time get_target_frame_time();
Delta_time get_target_vsync_frame_time();
Delta_time get_bad_fps();
Delta_time get_draw_time_autoopt_limit();

void check_autoopt();
void check_autoopt();

} // graphic ns
2 changes: 1 addition & 1 deletion test/graphic/graphic-test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ void Graphic_test::update(const Delta_time dt) {
fps_lock = !fps_lock;
detailed_log("VSync:" << s2yn(fps_lock) << std::endl);
graphic::set_disable_frame_limit(fps_lock);
graphic::wait_frame = fps_lock;
graphic::wait_frame_bak = graphic::wait_frame = fps_lock;
}

if (is_pressed_once(hpw::keycode::left)) {
Expand Down
2 changes: 1 addition & 1 deletion tool/editor/editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ void Editor::imgui_exec() {

void Editor::init_graphic() {
hpw::set_double_buffering(true);
graphic::wait_frame = false;
graphic::wait_frame_bak = graphic::wait_frame = false;
graphic::cpu_safe = false;
hpw::set_vsync(false);
graphic::set_disable_frame_limit(false);
Expand Down

0 comments on commit d3240aa

Please sign in to comment.