質問編集履歴

2

文章を修正

2021/06/09 06:43

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- [ヒープ バッファの終了後にメモリに書き込んだことを検出しました。]どういったことが原因して考えれるのか知りたい。
1
+ メモリアクセス違反発生する原因がどうしてもわかい。
test CHANGED
@@ -1,4 +1,6 @@
1
- 提示画像ですがGLSLシェーダーを用いたプログラムを作成していると以下のようなエラーがプログラムを終了すると発生ます。これはどいったことが原因として挙げられるのでしょうか?何回かに一回は普通に実行できるのですがたまにこいったエラーが表示されます。
1
+ 提示画像ですがGLSLシェーダーを用いたプログラムを作成していると以下のようなエラーがプログラムを終了すると発生ます。これはどいったことが原因として挙げられるのでしょうか?何回かに一回は普通に実行できるのですがたまにこいったエラーが表示されます。調査した結果コンストラクタのこの関数が悪いのですがなぜなのでしょうか?原因がどうしてもわかりません。
2
+
3
+
2
4
 
3
5
 
4
6
 

1

提示コードを修正

2021/06/09 06:43

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -24,13 +24,115 @@
24
24
 
25
25
  ```cpp
26
26
 
27
- // ##################################### レンダリング #####################################
28
27
 
29
- void Game::Renderer()const
30
28
 
31
- {
29
+ //コンストラクタ
32
30
 
31
+ FrameWork::Sprite::Sprite(std::shared_ptr<Window> w,const char* vert,const char* frag) : Transform_2D(),Shader()
32
+
33
+ {
34
+
35
+ windowContext = w; //ウインドウコンテキスト
36
+
37
+
38
+
39
+ //シェーダー読み込み
40
+
41
+ if (vert == NULL && frag == NULL)
42
+
43
+ {
44
+
45
+ vert = "Shader/2D/BasicTexture_2D.vert";
46
+
47
+ frag = "Shader/2D/BasicTexture_2D.frag";
48
+
49
+ LoadShader(vert, frag); //シェーダーロード
50
+
51
+
52
+
53
+ isDefaultShader = true;
54
+
55
+ }
56
+
57
+ else
58
+
59
+ {
60
+
61
+ std::cout << "個別のシェーダーが読み込まれました。" << std::endl;
62
+
63
+ LoadShader(vert, frag);
64
+
65
+ isDefaultShader = false;
66
+
67
+ }
68
+
69
+
70
+
71
+ //テクスチャ関係
72
+
73
+ textureID = std::vector<TextureData>(0); //テクスチャーデータ
74
+
75
+ textureUnitCount = 0; //テクスチャユニット数をカウント
76
+
77
+
78
+
79
+ //vao
80
+
81
+ glGenVertexArrays(1, &vao);
82
+
33
- sprite->setEnable();
83
+ glBindVertexArray(vao);
84
+
85
+
86
+
87
+ //vbo
88
+
89
+ glGenBuffers(1, &vbo);
90
+
91
+ glBindBuffer(GL_ARRAY_BUFFER, vbo);
92
+
93
+
94
+
95
+ //頂点
96
+
97
+ GLint attrib = getAttribLocation("vertexPosition");
98
+
99
+ glEnableVertexAttribArray(attrib);
100
+
101
+ glBufferData(GL_ARRAY_BUFFER, 6 * sizeof(VertexUV), rectangleVertex, GL_DYNAMIC_DRAW);
102
+
103
+ glVertexAttribPointer(attrib, 2, GL_FLOAT, GL_FALSE, 7 * sizeof(GLfloat), (GLvoid*)0);
104
+
105
+ setBindAttribVertex("vertexPosition");
106
+
107
+
108
+
109
+ //UV
110
+
111
+ attrib = getAttribLocation("vertexUV");
112
+
113
+ glEnableVertexAttribArray(attrib);
114
+
115
+ glBufferData(GL_ARRAY_BUFFER, 6 * sizeof(VertexUV), rectangleVertex, GL_DYNAMIC_DRAW);
116
+
117
+ glVertexAttribPointer(attrib, 2, GL_FLOAT, GL_FALSE, 7 * sizeof(GLfloat), (GLvoid*)(sizeof(GLfloat) * 5));
118
+
119
+ setBindAttribVertex("vertexUV");
120
+
121
+
122
+
123
+
124
+
125
+ //法線
126
+
127
+ attrib = getAttribLocation("vertexNorm");
128
+
129
+ glEnableVertexAttribArray(attrib);
130
+
131
+ glBufferData(GL_ARRAY_BUFFER, 6 * sizeof(VertexUV), rectangleVertex, GL_DYNAMIC_DRAW);
132
+
133
+ glVertexAttribPointer(attrib, 3, GL_FLOAT, GL_FALSE, 7 * sizeof(GLfloat), (GLvoid*)(sizeof(GLfloat) * 3));
134
+
135
+ setBindAttribVertex("vertexNorm");
34
136
 
35
137
 
36
138
 
@@ -38,37 +140,13 @@
38
140
 
39
141
 
40
142
 
41
- std::cout << "ああ" << std::endl;
42
143
 
43
144
 
145
+ //アルファブレンド有効
44
146
 
45
- sprite->setUniform3f("uCameraPos", glm::vec3(0, 0, 1));
147
+ glEnable(GL_BLEND);
46
148
 
47
-
48
-
49
- sprite->setUniform3f("uAmbientLight", glm::vec3(0.2, 0.2, 0.2));
50
-
51
- sprite->setUniform3f("uDirLight.mDirection", glm::vec3(0.0, -0.7, -0.7));
52
-
53
- sprite->setUniform3f("uDirLight.mDiffuseColor", glm::vec3(0, 1, 0));
54
-
55
- sprite->setUniform3f("uDirLight.mSpecColor", glm::vec3(0.5, 1, 0.5));
56
-
57
- sprite->setUniform1f("uSpecPower", 1.0f);
149
+ glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
58
-
59
-
60
-
61
- sprite->DrawGraph(glm::vec2(WINDOW_WIDTH / 2 - 100, WINDOW_HEIGHT / 2 - 75), 0, 0.0f, glm::vec2(0, 0), glm::vec2(0, 0), glm::vec2(200, 150));
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
- sprite->setDisable();
70
-
71
-
72
150
 
73
151
  }
74
152