質問編集履歴

3

文章を修正しました。

2021/01/24 02:48

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- OpenGL glfwでフレームレート設定する方法が知りたい。
1
+ OpenGL glfw処理停止する関数を知りたい。
test CHANGED
File without changes

2

文章を修正しました。

2021/01/24 02:48

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,8 @@
1
- タイトル通りですがどうすればフレームレートを60FPSに制限出来るのでしょか? glfwGetTime();関数を使ってdouble型秒を取得出来る事知っていすがこの関数を使ってどうすればい制限出来るか知りたです。
1
+ 提示コードですがフレームレートを60FPSで動作するよ設定したいのですがどうすればいいのでしょか?void wait(); 関数部の部分上手く実装出来ません。どうすれば停止出来るのでしょう
2
2
 
3
3
 
4
4
 
5
- 参考サイト: https://www.glfw.org/docs/3.0/group__time.html
5
+
6
6
 
7
7
 
8
8
 
@@ -10,21 +10,87 @@
10
10
 
11
11
  ```cpp
12
12
 
13
+ #ifndef ___FPS_HPP_
13
14
 
15
+ #define ___FPS_HPP_
14
16
 
17
+ #include "GLFW/include/GLFW/glfw3.h"
15
18
 
19
+ #include "stdio.h"
16
20
 
17
- while(true)
21
+ #include "Windows.h"
18
-
19
- {
20
22
 
21
23
 
22
24
 
23
25
 
24
26
 
25
- game->Update();
27
+ /*###############################################################################################################
26
28
 
29
+ # フレームレート
30
+
31
+ #################################################################################################################*/
32
+
33
+
34
+
35
+ class Fps {
36
+
37
+ int mStartTime; //測定開始時刻
38
+
39
+ int mCount; //カウンタ
40
+
41
+ float mFps; //fps
42
+
43
+ static const int N = 60;//平均を取るサンプル数
44
+
45
+ static const int FPS = 60;//設定したFPS
46
+
47
+
48
+
49
+ public:
50
+
51
+ Fps() {
52
+
53
+ glfwSetTime(0.0);
54
+
55
+
56
+
57
+ mStartTime = 0;
58
+
59
+ mCount = 0;
60
+
61
+ mFps = 0;
62
+
63
+ }
64
+
65
+
66
+
67
+ bool Update() {
68
+
69
+
70
+
71
+ if (mCount == 0) { //1フレーム目なら時刻を記憶
72
+
27
- game->GenerateOutput();
73
+ mStartTime = GetTime();
74
+
75
+ }
76
+
77
+ if (mCount == N) { //60フレーム目なら平均を計算する
78
+
79
+ int t = GetTime();
80
+
81
+ mFps = 1000.f / ((t - mStartTime) / (float)N);
82
+
83
+ mCount = 0;
84
+
85
+ mStartTime = t;
86
+
87
+ }
88
+
89
+ mCount++;
90
+
91
+ return true;
92
+
93
+ }
28
94
 
29
95
 
30
96
 
@@ -32,7 +98,53 @@
32
98
 
33
99
 
34
100
 
101
+ void Wait() {
102
+
103
+ glfwSetTime(0.0);
104
+
105
+
106
+
107
+ int tookTime = GetTime() - mStartTime; //かかった時間
108
+
109
+ int waitTime = mCount * 1000 / FPS - tookTime; //待つべき時間
110
+
111
+
112
+
113
+ printf("waitTime: %d\n",waitTime);
114
+
115
+ if (waitTime > 0) {
116
+
117
+ //Sleep(waitTime); //待機
118
+
35
- }
119
+ }
120
+
121
+ }
122
+
123
+
124
+
125
+
126
+
127
+ float GetTime()
128
+
129
+ {
130
+
131
+ return (float)glfwGetTime(); //* 1000.0;
132
+
133
+ }
134
+
135
+
136
+
137
+ };
138
+
139
+
140
+
141
+
142
+
143
+ #endif;
144
+
145
+
146
+
147
+
36
148
 
37
149
 
38
150
 

1

文章とタイトルを編集しました。

2021/01/24 02:38

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- OpenGL フレームレートを設定する方法が知りたい。
1
+ OpenGL glfwでフレームレートを設定する方法が知りたい。
test CHANGED
@@ -1,8 +1,8 @@
1
- ///コメン部のコードですがはゲームが始まっての時間カウントする関数なのですがこを使ってどうすれば60フレームレートに制限ことがきるのでしょうか?
1
+ タイル通りですがどうすばフレームレート60FPSに制限出来のでしょうか? glfwGetTime();関数を使ってdouble型秒を取得出来る事知っていますがこの関数を使ってどうすれば制限出来か知りたす。
2
2
 
3
3
 
4
4
 
5
- float r = 1 / 60;
5
+ 参考サイト: https://www.glfw.org/docs/3.0/group__time.html
6
6
 
7
7
 
8
8
 
@@ -12,29 +12,19 @@
12
12
 
13
13
 
14
14
 
15
- //描画アップデート
16
15
 
16
+
17
- void Game::GenerateOutput()
17
+ while(true)
18
18
 
19
19
  {
20
20
 
21
21
 
22
22
 
23
- //画面クリア関係
24
-
25
- glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
26
-
27
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
28
23
 
29
24
 
25
+ game->Update();
30
26
 
31
-
32
-
33
- DrawPlayer();
27
+ game->GenerateOutput();
34
-
35
-
36
-
37
- double t = glfwGetTime();/////////
38
28
 
39
29
 
40
30
 
@@ -42,32 +32,6 @@
42
32
 
43
33
 
44
34
 
45
- // font->RenderText(0, 24, 1, glm::vec3(1.0, 1.0, 1.0), "Player: %d , %d", playerPos.x, playerPos.y);
46
-
47
- font->RenderText(0, 24, 1, glm::vec3(1.0, 1.0, 1.0), "Player: %.2f", t);
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
- glViewport(0, 0, WIDTH, HEIGHT); //ビューポート
62
-
63
- glfwSwapBuffers(Window); //ダブルバッファリング
64
-
65
- glfwPollEvents(); //イベント処理
66
-
67
-
68
-
69
-
70
-
71
35
  }
72
36
 
73
37