KisaragiLibrary
 
読み取り中…
検索中…
一致する文字列を見つけられません
Kisaragi_Lib::FpsControl クラス

FPSの操作を行う [詳解]

公開メンバ関数

 FpsControl ()
 
 FpsControl (const int &_fps)
 
void Init (const int &_fps)
 
void Update ()
 フレーム終了時の処理
 

公開変数類

ReadOnly< double > DeltaTime { &deltaTime }
 
ReadOnly< double > Fps { &fps }
 

限定公開メンバ関数

void FrameStart ()
 フレーム開始時の処理
 
void FrameWait ()
 
void CalcDeltaTime ()
 デルタタイムを計算する
 
void CalcFPS ()
 
void CalcFrameSec ()
 

限定公開変数類

RangeNum< int, ClampOnOutOfRangemaxFPS { SYSTEM_MIN_FPS,SYSTEM_MAX_FPS }
 
double deltaTime = 0
 
double waitTime = 0
 
double fps = 0
 
double frameSec = 0
 
TimePoint startTime
 

詳解

FPSの操作を行う

構築子と解体子

◆ FpsControl() [1/2]

Kisaragi_Lib::FpsControl::FpsControl ( )
inline
55 {
56 maxFPS = 60;
58 }
void CalcFrameSec()
Definition FPS.cpp:136
RangeNum< int, ClampOnOutOfRange > maxFPS
Definition FPS.cpp:35

◆ FpsControl() [2/2]

Kisaragi_Lib::FpsControl::FpsControl ( const int & _fps)
inline
61 {
62 maxFPS = _fps;
64 }

関数詳解

◆ Init()

void Kisaragi_Lib::FpsControl::Init ( const int & _fps)
inline
67 {
68 maxFPS = _fps;
70 FrameStart();
71 }
void FrameStart()
フレーム開始時の処理
Definition FPS.cpp:103

◆ Update()

void Kisaragi_Lib::FpsControl::Update ( )
inline

フレーム終了時の処理

78 {
79
80 //DeltaTime決定
82
83 //次のフレームを開始する
84 FrameStart();
85
86
87 /*
88 * Q. なぜ計測開始後に待ちが入るのか?
89 * A. waitTimeを無視したDeltaTimeにならないように
90 */
91 //maxFrameよりも早いなら待機する
92 FrameWait();
93
94 //FPS計測
95 CalcFPS();
96 }
void FrameWait()
Definition FPS.cpp:108
void CalcFPS()
Definition FPS.cpp:131
void CalcDeltaTime()
デルタタイムを計算する
Definition FPS.cpp:126

◆ FrameStart()

void Kisaragi_Lib::FpsControl::FrameStart ( )
inlineprotected

フレーム開始時の処理

104 {
105 startTime = Clock::now();
106 }
TimePoint startTime
Definition FPS.cpp:46

参照元 Init(), Update().

◆ FrameWait()

void Kisaragi_Lib::FpsControl::FrameWait ( )
inlineprotected
109 {
110 if (frameSec > deltaTime)
111 {
113 std::this_thread::sleep_for(std::chrono::duration<double>{ waitTime });
114 }
115 else
116 {
117 waitTime = 0;
118 }
119
120 }
double frameSec
Definition FPS.cpp:43
double waitTime
Definition FPS.cpp:39
double deltaTime
Definition FPS.cpp:37

参照元 Update().

◆ CalcDeltaTime()

void Kisaragi_Lib::FpsControl::CalcDeltaTime ( )
inlineprotected

デルタタイムを計算する

127 {
128 deltaTime = std::chrono::duration_cast<std::chrono::nanoseconds>(Clock::now() - startTime).count() / 1000000000.0;
129 }

参照元 Update().

◆ CalcFPS()

void Kisaragi_Lib::FpsControl::CalcFPS ( )
inlineprotected
132 {
133 fps = 1.0 / (deltaTime + waitTime);
134 }
double fps
Definition FPS.cpp:41

参照元 Update().

◆ CalcFrameSec()

void Kisaragi_Lib::FpsControl::CalcFrameSec ( )
inlineprotected
137 {
138 frameSec = 1.0 / maxFPS;
139 }

参照元 FpsControl(), FpsControl(), Init().

メンバ詳解

◆ maxFPS

RangeNum<int, ClampOnOutOfRange> Kisaragi_Lib::FpsControl::maxFPS { SYSTEM_MIN_FPS,SYSTEM_MAX_FPS }
protected
constexpr int SYSTEM_MAX_FPS
Definition FPS.cpp:25
constexpr int SYSTEM_MIN_FPS
ライブラリの上下限のFPS
Definition FPS.cpp:24

参照元 CalcFrameSec(), FpsControl(), FpsControl(), Init().

◆ deltaTime

double Kisaragi_Lib::FpsControl::deltaTime = 0
protected

◆ waitTime

double Kisaragi_Lib::FpsControl::waitTime = 0
protected

参照元 CalcFPS(), FrameWait().

◆ fps

double Kisaragi_Lib::FpsControl::fps = 0
protected

参照元 CalcFPS().

◆ frameSec

double Kisaragi_Lib::FpsControl::frameSec = 0
protected

◆ startTime

TimePoint Kisaragi_Lib::FpsControl::startTime
protected

◆ DeltaTime

ReadOnly<double> Kisaragi_Lib::FpsControl::DeltaTime { &deltaTime }
50{ &deltaTime };

◆ Fps

ReadOnly<double> Kisaragi_Lib::FpsControl::Fps { &fps }
51{ &fps };

このクラス詳解は次のファイルから抽出されました: