質問編集履歴

5

提示コードと文章を修正しました。

2021/01/28 05:11

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- Critical error detected c0000374 の原因が知りたい。
1
+ Critical error detected c0000374 の原因が知りたい。動的にメモリを確保することが危険とはどうすればいいのか?
test CHANGED
@@ -1,4 +1,14 @@
1
- 提示コードのどこかで連続してこの関数を使ってシューティングゲームの弾をロードしてると必ずこのエラーが出るのですが何が悪いのでしょうか? 提示サイトを見たり色々調べましたがわかりません。どうすればいいのでしょうか?
1
+ 提示コードのどこかで連続してこの関数を使ってシューティングゲームの弾をロードしてると必ずこのエラーが出るのですが参考サイトを見ると
2
+
3
+ 動的に確保したメモリとありますがこの場合はでは new ですがこれが危険という場合どうすれば動的にメモリを確保すればいいのでしょうか?
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
2
12
 
3
13
 
4
14
 
@@ -8,15 +18,7 @@
8
18
 
9
19
 
10
20
 
11
- 参考サイト1: https://donadona.hatenablog.jp/entry/2016/10/28/235531
12
-
13
- 参考サイト: https://cdecrement.blog.fc2.com/blog-entry-82.html
21
+ 参考サイト: https://cdecrement.blog.fc2.com/blog-entry-82.html
14
-
15
- 参考サイト3:https://www.366service.com/jp/qa/0891e31516d74502cfd08e3ac20d16b8
16
-
17
-
18
-
19
-
20
22
 
21
23
  ```cpp
22
24
 

4

文章を修正しました。

2021/01/28 05:11

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- ブレークポイントが発生しまたの原因がどうしてもわからない。
1
+ Critical error detected c0000374 の原因が知りたい。
test CHANGED
@@ -1,30 +1,18 @@
1
- 提示コードのPlayerクラスすがなぜコメント部で囲ってあるところでなぜ"ブレクポイトが発生ました"表示されのでしょうか?その内部のBulletクラス内部のSpriteクスにもデストラクタ。コピコンストラクタも記述してあるのですが何が原因のかどうてもわかりません。
1
+ 提示コードのどこか連続してこの関数を使ってシュティグゲームの弾をロードると必ずこラーが出るのですが何が悪いでしょう? 提示サイトを見たり色々調べまたがわかりません。どうすればいいのでしょうか?
2
-
3
- printf();を使って値やその場所にコードが移動しているかを確認しましたが何もおかしいところはないためどうしてもわかりません。
4
2
 
5
3
 
6
4
 
7
- エラー「Critical error detected 」
5
+ アクセスエラー「 Critical error detected c0000374 
8
-
9
-
10
-
11
- 仕様「キー入力によりスペースボタンで弾を発射するのですがそこで画面の外に出たらその弾を削除してほしいという処理です。」
12
6
 
13
7
 
14
8
 
15
9
 
16
10
 
17
- 実装したい動作「画面の外に弾が移動したら削除する動作でeraseすることによって要素ごと消して欲しい。」
11
+ 参考サイト1: https://donadona.hatenablog.jp/entry/2016/10/28/235531
18
12
 
19
-  
13
+ 参考サイト2: https://cdecrement.blog.fc2.com/blog-entry-82.html
20
14
 
21
-
15
+ 参考サイト3:https://www.366service.com/jp/qa/0891e31516d74502cfd08e3ac20d16b8
22
-
23
-
24
-
25
-
26
-
27
-
28
16
 
29
17
 
30
18
 
@@ -32,834 +20,84 @@
32
20
 
33
21
  ```cpp
34
22
 
23
+ #include "../Header/Texture.hpp"
24
+
35
- #include "../../Header/Game/Player.hpp"
25
+ #include "../Header/Game.hpp"
36
26
 
37
27
 
38
28
 
39
- // コンストラクタ
40
-
41
- Player::Player(class Game* g,const char* fileName ) : Actor_2D()
29
+ byte* LoadTexture(const char* str, int& width, int& height,int& channels )
42
30
 
43
31
  {
44
32
 
33
+ cv::Mat image;
34
+
45
- Owner = g; //Game クラス
35
+ image = cv::imread(str, cv::IMREAD_UNCHANGED);
36
+
37
+
46
38
 
47
39
 
48
40
 
49
- mSprite = new Sprite(Owner,fileName); // スプライトクラス
41
+ //printf("image.channels: %d\n", image.channels()); // 3
50
42
 
51
- mInput = new Input_Key(Owner); // キー入力クラス
52
43
 
53
- mSpeed = SPEED; // 移動速度
54
44
 
55
- mVector = glm::vec2(0,1); // 方向
45
+ if (image.empty() == true)
56
46
 
57
-
47
+ {
58
48
 
59
- mKeyCode = Key_Code::Up;
49
+ printf("image.empty()\n");
50
+
51
+ return nullptr;
52
+
53
+ }
54
+
55
+ else {
56
+
57
+ // printf("load \n");
58
+
59
+
60
+
61
+ cv::cvtColor(image, image, cv::COLOR_BGRA2RGBA);
62
+
63
+
64
+
65
+ // printf("channels: %d\n",image.channels()); //4
66
+
67
+ int size = image.rows * image.cols * image.channels();
60
68
 
61
69
 
62
70
 
63
71
 
64
72
 
65
- // RIGHT
73
+ // printf("size: %d\n", size);
66
74
 
67
- mSpriteNum.at(0).at(0).at(0).x = 0;
75
+ byte* bytes = new byte[size]{ 0 };
68
76
 
69
- mSpriteNum.at(0).at(0).at(0).y = 0;
77
+ std::memcpy(bytes, (void*)image.data, (size_t)size);
70
78
 
71
- mSpriteNum.at(0).at(0).at(1).x = CELL - 1;
79
+
72
80
 
73
- mSpriteNum.at(0).at(0).at(1).y = CELL - 1;
81
+ // 画像サイズを取得
74
82
 
83
+ width = image.cols; // 横
75
84
 
85
+ height = image.rows; // 縦
76
86
 
77
- mSpriteNum.at(0).at(1).at(0).x = 0;
87
+
78
88
 
79
- mSpriteNum.at(0).at(1).at(0).y = CELL - 1;
80
-
81
- mSpriteNum.at(0).at(1).at(1).x = CELL - 1;
82
-
83
- mSpriteNum.at(0).at(1).at(1).y = CELL * 2 - 1;
84
-
85
-
86
-
87
- // DOWN
88
-
89
- mSpriteNum.at(1).at(0).at(0).x = CELL;
90
-
91
- mSpriteNum.at(1).at(0).at(0).y = 1;
92
-
93
- mSpriteNum.at(1).at(0).at(1).x = CELL * 2 - 1;
94
-
95
- mSpriteNum.at(1).at(0).at(1).y = CELL - 1;
96
-
97
-
98
-
99
- mSpriteNum.at(1).at(1).at(0).x = CELL - 0;
100
-
101
- mSpriteNum.at(1).at(1).at(0).y = CELL + 1;
102
-
103
- mSpriteNum.at(1).at(1).at(1).x = CELL * 2 - 1;
104
-
105
- mSpriteNum.at(1).at(1).at(1).y = CELL * 2 - 1;
106
-
107
-
108
-
109
- // UP
110
-
111
- mSpriteNum.at(2).at(0).at(0).x = CELL * 2 + 1;
112
-
113
- mSpriteNum.at(2).at(0).at(0).y = 1;
114
-
115
- mSpriteNum.at(2).at(0).at(1).x = CELL * 3;
116
-
117
- mSpriteNum.at(2).at(0).at(1).y = CELL - 1;
118
-
119
-
120
-
121
- mSpriteNum.at(2).at(1).at(0).x = CELL * 2 + 1;
122
-
123
- mSpriteNum.at(2).at(1).at(0).y = CELL + 1;
124
-
125
- mSpriteNum.at(2).at(1).at(1).x = CELL * 3 - 1;
126
-
127
- mSpriteNum.at(2).at(1).at(1).y = CELL * 2 - 1;
128
-
129
-
130
-
131
- // LEFT
132
-
133
- mSpriteNum.at(3).at(0).at(0).x = CELL * 3 + 1;
134
-
135
- mSpriteNum.at(3).at(0).at(0).y = 1;
136
-
137
- mSpriteNum.at(3).at(0).at(1).x = CELL * 4;
138
-
139
- mSpriteNum.at(3).at(0).at(1).y = CELL - 1;
140
-
141
-
142
-
143
- mSpriteNum.at(3).at(1).at(0).x = CELL * 3 + 1;
144
-
145
- mSpriteNum.at(3).at(1).at(0).y = CELL + 1;
146
-
147
- mSpriteNum.at(3).at(1).at(1).x = CELL * 4 - 1;
148
-
149
- mSpriteNum.at(3).at(1).at(1).y = CELL * 2 - 1;
150
-
151
-
152
-
153
- }
154
-
155
-
156
-
157
- // 計算
158
-
159
- void Player::Update()
160
-
161
- {
162
-
163
- // キー入力
164
-
165
- mSpeed = SPEED;
166
-
167
- if (mInput->KeyDownHold(GLFW_KEY_LEFT) == true)
168
-
169
- {
170
-
171
- mVector.x = -1.0f;
172
-
173
- mVector.y = 0.0f;
174
-
175
- mKeyCode = Key_Code::Left;
176
-
177
- }
178
-
179
- else if (mInput->KeyDownHold(GLFW_KEY_RIGHT) == true)
180
-
181
- {
182
-
183
- mVector.x = 1.0f;
184
-
185
- mVector.y = 0.0f;
186
-
187
- mKeyCode = Key_Code::Right;
188
-
189
-
190
-
191
- }
192
-
193
- else if (mInput->KeyDownHold(GLFW_KEY_UP) == true)
194
-
195
- {
196
-
197
- mVector.x = 0.0f;
198
-
199
- mVector.y = 1.0f;
200
-
201
- mKeyCode = Key_Code::Up;
202
-
203
-
204
-
205
- }
206
-
207
- else if (mInput->KeyDownHold(GLFW_KEY_DOWN) == true)
208
-
209
- {
210
-
211
- mVector.x = 0.0f;
212
-
213
- mVector.y = -1.0f;
214
-
215
- mKeyCode = Key_Code::Down;
216
-
217
-
218
-
219
- }
220
-
221
- else {
222
-
223
- mSpeed = 0;
224
-
225
- }
226
-
227
-
228
-
229
- // 攻撃
230
-
231
- if (mInput->KeyDown(GLFW_KEY_SPACE) == true)
232
-
233
- {
234
-
235
- bullet.push_back(Bullet(Owner, mPosition, mVector));
89
+ channels = image.channels(); //チャンネル数を取得
236
-
237
- }
238
-
239
-
240
-
241
- //printf("bullet size: %d\n", bullet.size());
242
-
243
-
244
-
245
-
246
-
247
-
248
-
249
- ///////////////////////////////////////////////////////////////////////////////////////////
250
-
251
- // 弾 更新
252
-
253
- for (std::vector<Bullet>::iterator itr = bullet.begin(); itr != bullet.end(); )
254
-
255
- {
256
-
257
- if (itr->getPosition().x > Owner->getWindowSize().x - 200)
258
-
259
- {///////////////////////////////////////////////////
260
-
261
- //printf("いいいいい\n");
262
-
263
- itr = bullet.erase(itr);
264
-
265
- //////////////////////////////////////////////////
266
-
267
- }
268
-
269
- else
270
-
271
- {
272
-
273
- itr->Update();
274
-
275
- itr++;
276
-
277
- }
278
-
279
- }
280
-
281
- //////////////////////////////////////////////////////////////////////////////////////////////
282
90
 
283
91
 
284
92
 
285
93
 
286
94
 
95
+ return bytes; // unsigned char*を返す
287
96
 
288
-
289
- // printf("bullet size: %d\n",bullet.size());
290
-
291
-
292
-
293
-
294
-
295
- mPosition += mVector * mSpeed; //実移動
296
-
297
- }
97
+ }
298
-
299
-
300
-
301
-
302
-
303
- // 描画
304
-
305
- void Player::Draw()
306
-
307
- {
308
-
309
- /*
310
-
311
- for (std::vector<Bullet>::iterator itr = bullet.begin(); itr != bullet.end(); itr++)
312
-
313
- {
314
-
315
- itr->Draw();
316
-
317
- //printf("rrrr\n");
318
-
319
- }
320
-
321
- */
322
-
323
-
324
-
325
-
326
-
327
- mSprite->DrawGraph(mPosition, mSpriteNum.at((int)mKeyCode).at(1).at(0), mSpriteNum.at((int)mKeyCode).at(1).at(1));
328
-
329
- }
330
-
331
-
332
-
333
-
334
-
335
- // デストラクタ
336
-
337
- Player::~Player()
338
-
339
- {
340
-
341
-
342
98
 
343
99
  }
344
100
 
345
101
 
346
102
 
347
103
  ```
348
-
349
-
350
-
351
- ```cpp
352
-
353
- #include "../../Header/Game/Bullet.hpp"
354
-
355
- #include "../../Header/Sprite.hpp"
356
-
357
-
358
-
359
-
360
-
361
-
362
-
363
- // コンストラクタ
364
-
365
- Bullet::Bullet(class Game* g,glm::vec2 pos,glm::vec2 vec) : Actor_2D()
366
-
367
- {
368
-
369
- Owner = g; //Game クラス
370
-
371
-
372
-
373
- mPosition = pos; //座標
374
-
375
- mVector = vec; //方向
376
-
377
- speed = 10; //速度
378
-
379
-
380
-
381
- mSprite = new Sprite(g,"Assets/Bullet.png"); // スプライトクラス
382
-
383
- //mSprite = nullptr;
384
-
385
- }
386
-
387
-
388
-
389
- // 計算
390
-
391
- void Bullet::Update()
392
-
393
- {
394
-
395
- mPosition.x += mVector.x * speed;
396
-
397
- mPosition.y += mVector.y * speed;
398
-
399
-
400
-
401
- // printf("mPosition.x: %f\n", mPosition.x);
402
-
403
- // printf("mPosition.y: %f\n",mPosition.y);
404
-
405
-
406
-
407
- }
408
-
409
-
410
-
411
- // 描画
412
-
413
- void Bullet::Draw()
414
-
415
- {
416
-
417
- glm::vec2 size = mSprite->getSize();
418
-
419
- mSprite->DrawGraph(mPosition,glm::vec2(0,1),glm::vec2(size.x,size.y));
420
-
421
- }
422
-
423
-
424
-
425
-
426
-
427
- // 座標を取得
428
-
429
- glm::vec2 Bullet::getPosition()
430
-
431
- {
432
-
433
- return mPosition;
434
-
435
- }
436
-
437
-
438
-
439
- // コピーコンストラクタ
440
-
441
- Bullet::Bullet(const Bullet &b)
442
-
443
- {
444
-
445
- printf("Bullet コピーコンストラクタ\n");
446
-
447
-
448
-
449
- mPosition = b.mPosition; //座標
450
-
451
- mVector = b.mVector; //方向
452
-
453
- speed = b.speed; //速度
454
-
455
- Owner = b.Owner; //Game クラス
456
-
457
-
458
-
459
- mSprite = new Sprite(b.Owner,"Assets/Bullet.png"); //スプライト
460
-
461
-
462
-
463
-
464
-
465
- }
466
-
467
-
468
-
469
-
470
-
471
- // デストラクタ
472
-
473
- Bullet::~Bullet()
474
-
475
- {
476
-
477
- printf("Bullet デストラクタ\n");
478
-
479
- //printf("アドレス: %x\n",mSprite);
480
-
481
-
482
-
483
- delete mSprite;
484
-
485
- mSprite = nullptr;
486
-
487
- }
488
-
489
-
490
-
491
- ```
492
-
493
-
494
-
495
- ```cpp
496
-
497
- #include "../Header/Sprite.hpp"
498
-
499
- #include "../Header/Shader.hpp"
500
-
501
- #include "../Header/Game.hpp"
502
-
503
- #include "../Header/Texture.hpp"
504
-
505
- #include "../Header/VertexData.hpp"
506
-
507
-
508
-
509
- // 数学ライブラリ
510
-
511
- #include "glm/ext.hpp"
512
-
513
- #include "glm/glm.hpp"
514
-
515
-
516
-
517
- // OpenCV
518
-
519
- #include <opencv2/core.hpp>
520
-
521
-
522
-
523
- class Game;
524
-
525
- /*################################################################################################################
526
-
527
- * 画像 描画クラス
528
-
529
- ################################################################################################################*/
530
-
531
-
532
-
533
- //コンストラクタ
534
-
535
- /*
536
-
537
- * Game クラス
538
-
539
- * テクスチャ パス
540
-
541
- * 描画する画像の寸法
542
-
543
- */
544
-
545
-
546
-
547
- Sprite::Sprite(class Game* g, const char* FileName) : Transform_2D(g)
548
-
549
- {
550
-
551
- shader = new Shader(g,"Shader/2D/Sprite.vert", "Shader/2D/Sprite.frag");
552
-
553
- Owner = g;//Gameクラス
554
-
555
-
556
-
557
- Transform_2D::setTransfrom(glm::vec2(1,1),0,glm::vec2(0,0)); //トランスフォームを初期化
558
-
559
-
560
-
561
- //テクスチャを設定
562
-
563
- glGenTextures(1, &TextureID);
564
-
565
- glBindTexture(GL_TEXTURE_2D, TextureID);
566
-
567
-
568
-
569
- float width = 0, height = 0; //画像の寸法
570
-
571
- int channels = 0; //画像のチャンネル数
572
-
573
-
574
-
575
- byte* data = LoadTexture(FileName,width,height,channels); //テクスチャを取得
576
-
577
-
578
-
579
-
580
-
581
- mPicSize.x = width;
582
-
583
- mPicSize.y = height;
584
-
585
-
586
-
587
- //printf("widht: %f\n", width);
588
-
589
- //printf("height: %f\n", height);
590
-
591
-
592
-
593
- if (data != NULL)
594
-
595
- {
596
-
597
- if (channels == 3)
598
-
599
- {
600
-
601
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, (GLsizei)width, (GLsizei)height, 0, GL_RGB, GL_UNSIGNED_BYTE, data);
602
-
603
- }
604
-
605
- else if (channels == 4)
606
-
607
- {
608
-
609
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, (GLsizei)width, (GLsizei)height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
610
-
611
- }
612
-
613
- }
614
-
615
- else {
616
-
617
- std::cerr << "Unable to load texture: " << FileName << std::endl;
618
-
619
- }
620
-
621
-
622
-
623
-
624
-
625
-
626
-
627
- //ミニマップを設定
628
-
629
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
630
-
631
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
632
-
633
- glGenerateMipmap(GL_TEXTURE_2D);
634
-
635
-
636
-
637
- //異方性フィルタリングを設定
638
-
639
- GLfloat largest;
640
-
641
- glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest);
642
-
643
- glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest);
644
-
645
-
646
-
647
-
648
-
649
- glDeleteBuffers(1, &VAO);
650
-
651
- glDeleteVertexArrays(1, &VAO);
652
-
653
-
654
-
655
- glBindVertexArray(0);
656
-
657
- glBindTexture(GL_TEXTURE_2D, 0);
658
-
659
-
660
-
661
-
662
-
663
- delete data;
664
-
665
- data = nullptr;
666
-
667
-
668
-
669
- }
670
-
671
-
672
-
673
- //描画
674
-
675
- void Sprite::DrawGraph(glm::vec2 pos, glm::vec2 start, glm::vec2 end)
676
-
677
- {
678
-
679
-
680
-
681
-
682
-
683
- Transform_2D::UpdateTransform(); //トランスフォームを更新
684
-
685
- Transform_2D::setTransform_Move(pos); //移動
686
-
687
-
688
-
689
- shader->Enable(); //シェーダーを有効にする
690
-
691
- shader->SetFloatUniform_3m("uViewMatrix", getViewMatrix());
692
-
693
- shader->SetFloatUniform_3m("uWorldMatrix", getWorldMatrix());
694
-
695
-
696
-
697
-
698
-
699
- glm::vec2 mSize;
700
-
701
- mSize = end - start; //画像のサイズを取得
702
-
703
-
704
-
705
-
706
-
707
-
708
-
709
-
710
-
711
- // 頂点情報を設定
712
-
713
- vertex[0] = VertexAttribute_2D{ -mSize.x / 2.0f,mSize.y / 2.0f, start.x / mPicSize.x ,start.y / mPicSize.y };
714
-
715
-
716
-
717
-
718
-
719
-
720
-
721
- vertex[1] = VertexAttribute_2D{ -mSize.x / 2.0f,-mSize.y / 2.0f, start.x / mPicSize.x ,end.y / mPicSize.y };
722
-
723
- vertex[2] = VertexAttribute_2D{ mSize.x / 2.0f,-mSize.y / 2.0f, end.x / mPicSize.x ,end.y / mPicSize.y };
724
-
725
-
726
-
727
- vertex[3] = VertexAttribute_2D{ -mSize.x / 2.0f,mSize.y / 2.0f, start.x / mPicSize.x ,start.y / mPicSize.y };
728
-
729
- vertex[4] = VertexAttribute_2D{ mSize.x / 2.0f,-mSize.y / 2.0f, end.x / mPicSize.x ,end.y / mPicSize.y };
730
-
731
- vertex[5] = VertexAttribute_2D{ mSize.x / 2.0f,mSize.y / 2.0f, end.x / mPicSize.x ,start.y / mPicSize.y };
732
-
733
-
734
-
735
-
736
-
737
-
738
-
739
- //VAO
740
-
741
- glGenVertexArrays(1, &VAO);
742
-
743
- glBindVertexArray(VAO);
744
-
745
-
746
-
747
- //VBO
748
-
749
- glGenBuffers(1, &VBO);
750
-
751
- glBindBuffer(GL_ARRAY_BUFFER, VBO);
752
-
753
- glBufferData(GL_ARRAY_BUFFER, (sizeof(vertex) / sizeof(vertex[0])) * sizeof(VertexAttribute_2D), vertex, GL_STATIC_DRAW);
754
-
755
-
756
-
757
- //頂点座標
758
-
759
- glEnableVertexAttribArray(0);
760
-
761
- glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, sizeof(VertexAttribute_2D), NULL);
762
-
763
-
764
-
765
- //UV座標
766
-
767
- glEnableVertexAttribArray(1);
768
-
769
- glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(VertexAttribute_2D), (void*)(sizeof(float) * 2));
770
-
771
-
772
-
773
-
774
-
775
- glBindVertexArray(VAO);
776
-
777
- glBindTexture(GL_TEXTURE_2D, TextureID);
778
-
779
- glDrawArrays(GL_TRIANGLES, 0, (GLsizei)std::size(vertex));
780
-
781
-
782
-
783
- // バッファを解放
784
-
785
- glDeleteBuffers(1,&VAO);
786
-
787
- glDeleteVertexArrays(1,&VAO);
788
-
789
-
790
-
791
- //glBindVertexArray(0);
792
-
793
- // glBindTexture(GL_TEXTURE_2D, 0);
794
-
795
-
796
-
797
- }
798
-
799
-
800
-
801
-
802
-
803
-
804
-
805
- // 画像サイズを取得
806
-
807
- glm::vec2 Sprite::getSize()
808
-
809
- {
810
-
811
- return mPicSize;
812
-
813
- }
814
-
815
-
816
-
817
-
818
-
819
-
820
-
821
- // デストラクタ
822
-
823
- Sprite::Sprite(const Sprite & sp) : Transform_2D(sp.Owner)
824
-
825
- {
826
-
827
- shader = new Shader(sp.Owner, "Shader/2D/Sprite.vert", "Shader/2D/Sprite.frag");
828
-
829
- Owner = sp.Owner;//Gameクラス
830
-
831
- mPicSize.x = sp.mPicSize.x;
832
-
833
- mPicSize.y = sp.mPicSize.y;
834
-
835
-
836
-
837
-
838
-
839
- }
840
-
841
-
842
-
843
-
844
-
845
- // デストラクタ
846
-
847
- Sprite::~Sprite()
848
-
849
- {
850
-
851
- printf("Sprite delete\n");
852
-
853
- delete shader;
854
-
855
- shader = nullptr;
856
-
857
- glDeleteTextures(1,&TextureID);
858
-
859
-
860
-
861
- }
862
-
863
-
864
-
865
- ```

3

文章を修正しました。

2021/01/28 04:46

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,8 @@
4
4
 
5
5
 
6
6
 
7
+ エラー「Critical error detected 」
8
+
7
9
 
8
10
 
9
11
  仕様「キー入力によりスペースボタンで弾を発射するのですがそこで画面の外に出たらその弾を削除してほしいという処理です。」

2

文章を修正しました。

2021/01/28 04:06

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- 例外スローされたのどうしても原因がわからない。
1
+ ブレークポイント発生しまたの原因がどうしてもわからない。
test CHANGED
@@ -1,4 +1,4 @@
1
- 提示コードのPlayerクラスですがなぜコメント部で囲ってあるところで例外スローされました表示されるのでしょうか?その内部のBulletクラスとその内部のSpriteクラスにもデストラクタ。コピーコンストラクタも記述してあるのですが何が原因のかどうしてもわかりません。
1
+ 提示コードのPlayerクラスですがなぜコメント部で囲ってあるところでなぜ"ブレークポイント発生しました"表示されるのでしょうか?その内部のBulletクラスとその内部のSpriteクラスにもデストラクタ。コピーコンストラクタも記述してあるのですが何が原因のかどうしてもわかりません。
2
2
 
3
3
  printf();を使って値やその場所にコードが移動しているかを確認しましたが何もおかしいところはないためどうしてもわかりません。
4
4
 
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- ゲーム内仕様「キー入力によりスペースボタンで弾を発射するのですがそこで画面の外に出たらその弾を削除してほしいという処理です。」
9
+ 仕様「キー入力によりスペースボタンで弾を発射するのですがそこで画面の外に出たらその弾を削除してほしいという処理です。」
10
10
 
11
11
 
12
12
 
@@ -698,10 +698,6 @@
698
698
 
699
699
  mSize = end - start; //画像のサイズを取得
700
700
 
701
- // printf("mSize.x %f\n", mSize.x);
702
-
703
- //` printf("start.x. x%f\n", end.x);
704
-
705
701
 
706
702
 
707
703
 
@@ -716,7 +712,7 @@
716
712
 
717
713
 
718
714
 
719
- // printf("%f\n", start.y / mSize.y);
715
+
720
716
 
721
717
 
722
718
 

1

文章を修正しました。

2021/01/28 03:55

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,6 +4,14 @@
4
4
 
5
5
 
6
6
 
7
+
8
+
9
+ ゲーム内仕様「キー入力によりスペースボタンで弾を発射するのですがそこで画面の外に出たらその弾を削除してほしいという処理です。」
10
+
11
+
12
+
13
+
14
+
7
15
  実装したい動作「画面の外に弾が移動したら削除する動作でeraseすることによって要素ごと消して欲しい。」
8
16
 
9
17