質問編集履歴

5

文章を修正しました。

2021/03/13 04:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- Github: https://github.com/Shigurechan/ActionGame/commit/1f4be3b0904a91a4749b7ceec44518b4abf4bd89
19
+ Github: https://github.com/Shigurechan/ActionGame/tree/07b47f5b32f4dfd6f93e70ca4a9609d891e48d9f
20
20
 
21
21
  使用しているライブラリ: dxlib
22
22
 

4

文章を追加

2021/03/13 04:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,9 @@
16
16
 
17
17
 
18
18
 
19
-
19
+ Github: https://github.com/Shigurechan/ActionGame/commit/1f4be3b0904a91a4749b7ceec44518b4abf4bd89
20
+
21
+ 使用しているライブラリ: dxlib
20
22
 
21
23
  ![イメージ説明](eda29084bf80f399987bb24a2942a70b.jpeg)
22
24
 

3

文章を修正しました。

2021/03/12 06:49

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- ファイルを読み込む関数でfclose()しているのにも関わらず処理が物凄く重たくなる原因が知りたい。
1
+ ファイルを読み込む関数でfclose()しているのにも関わらず処理が物凄く重たくなる場合の修正方法が知りたい。
test CHANGED
@@ -1,6 +1,4 @@
1
- 提示コードのvoid Stage::LoadStage()関数が原因で処理が物凄く重たくなりまともに動作しなくなるのですがなぜでしょうか?**毎フレーム実行する関数ではなく。ファイルポインタもfclose()して**原因りません。
1
+ 提示コードのvoid Stage::LoadStage()関数が原因で処理が物凄く重たくなりまともに動作しなくなるのですがなぜでしょうか?**毎フレーム実行する関数ではない該当コードは **//マップオブジェクトを設定  の二重for文**をコメントアウトすると問題なく動作するのですこれはどう修正したらいいのでしょう
2
-
3
-
4
2
 
5
3
 
6
4
 

2

文章とタイトルを修正

2021/03/12 04:55

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Visual studio 2019でDebug モードで実行すと極端に処理が重くなる原因が知りたい。
1
+ ファイルを読み込む関数でfclose()していも関わらず処理が物凄くくなる原因が知りたい。
test CHANGED
@@ -1,8 +1,4 @@
1
- 提示コードですが下記のような規模のプログラムでなぜデバッグモードで実行すると処理が物凄く重たくなり全く動作しなくなるのでしょうか?
2
-
3
- 原因がさっぱりわかりません。Releaseモードでは普通に実行できます。
4
-
5
- 追記: 調べたところvoid Stage::LoadStage()関数でをコメントアウトすると問題なく実行できます。ということはこの関数問題あることわかりましたが何問題なのでしょうか?毎フレーム実行する関数ではなく。ファイルポインタもfclose();しています。
1
+ 提示コードのvoid Stage::LoadStage()関数が原因処理物凄く重たくなりまともに動作しなくなるのですがなぜでしょうか?**毎フレーム実行する関数ではなく。ファイルポインタもfclose()しています。**原因がわかりません。
6
2
 
7
3
 
8
4
 

1

文章を追記

2021/03/12 04:03

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  原因がさっぱりわかりません。Releaseモードでは普通に実行できます。
4
4
 
5
+ 追記: 調べたところvoid Stage::LoadStage()関数でをコメントアウトすると問題なく実行できます。ということはこの関数が問題であることがわかりましたが何問題なのでしょうか?毎フレーム実行する関数ではなく。ファイルポインタもfclose();しています。
6
+
7
+
8
+
9
+
10
+
5
11
 
6
12
 
7
13
  確認、試したこと
@@ -211,3 +217,169 @@
211
217
 
212
218
 
213
219
  ```
220
+
221
+
222
+
223
+ ```cpp
224
+
225
+ void Stage::LoadStage()
226
+
227
+ {
228
+
229
+
230
+
231
+ mStage.clear(); //ステージをクリア
232
+
233
+
234
+
235
+ // *** ステージロード ***
236
+
237
+ glm::ivec2 StageSize = glm::ivec2(0, 0); //画面サイズ
238
+
239
+ FILE* fp = NULL; //ファイルポインタ
240
+
241
+
242
+
243
+ fopen_s(&fp, "Stage_Data/Debug_Stage.bin", "rb"); //読み込みモードでファイルを開く
244
+
245
+
246
+
247
+ if (fp != NULL)
248
+
249
+ {
250
+
251
+ //ステージサイズを読み込む(先頭8バイト)
252
+
253
+ fread(&StageSize.x, sizeof(int), 1, fp);
254
+
255
+ fread(&StageSize.y, sizeof(int), 1, fp);
256
+
257
+
258
+
259
+ for (int y = 0; y < StageSize.y; y++)
260
+
261
+ {
262
+
263
+ std::vector<byte> tmp;
264
+
265
+ for (int x = 0; x < (int)StageSize.x; x++)
266
+
267
+ {
268
+
269
+ byte b = 0;
270
+
271
+ fread(&b, sizeof(byte), 1, fp);
272
+
273
+ tmp.push_back(b);
274
+
275
+
276
+
277
+ }
278
+
279
+
280
+
281
+
282
+
283
+ Stage_Grid->push_back(tmp);
284
+
285
+
286
+
287
+ }
288
+
289
+ fclose(fp);
290
+
291
+
292
+
293
+ }
294
+
295
+ else {
296
+
297
+ printf("ファイルを読み込めません。\n");
298
+
299
+ }
300
+
301
+
302
+
303
+ //マップオブジェクトを設定
304
+
305
+ for (int y = 0; y < StageSize.y; y++)
306
+
307
+ {
308
+
309
+ for (int x = 0; x < StageSize.x; x++)
310
+
311
+ {
312
+
313
+ switch (Stage_Grid->at(y).at(x))
314
+
315
+ {
316
+
317
+ //ブロック
318
+
319
+ case 1:
320
+
321
+ {
322
+
323
+ mStage.push_back(MapChip(StageObjectType::Block, glm::ivec2(x * CELL, y * CELL), BlockSize, Block_sprite));
324
+
325
+ }
326
+
327
+ break;
328
+
329
+
330
+
331
+ //レンガ
332
+
333
+ case 2:
334
+
335
+ {
336
+
337
+ mStage.push_back(MapChip(StageObjectType::Brick, glm::ivec2(x * CELL, y * CELL), BrickSize, Brick_sprite));
338
+
339
+ }
340
+
341
+ break;
342
+
343
+
344
+
345
+ //ショップ
346
+
347
+ case 3:
348
+
349
+ {
350
+
351
+ mStage.push_back(MapChip(StageObjectType::Shop, glm::ivec2(x * CELL, y * CELL), ShopSize, Shop_sprite));
352
+
353
+ }
354
+
355
+ break;
356
+
357
+
358
+
359
+ default:
360
+
361
+ {
362
+
363
+ mStage.push_back(MapChip(StageObjectType::Shop, glm::ivec2(x * CELL, y * CELL), glm::ivec2(0, 0), -1));
364
+
365
+ }
366
+
367
+ }
368
+
369
+ }
370
+
371
+ }
372
+
373
+
374
+
375
+
376
+
377
+ fclose(fp);
378
+
379
+
380
+
381
+ }
382
+
383
+
384
+
385
+ ```