提示コードですなぜglUniform4f();関数で頂点シェーダに値を設定しているのにも関わらず画面に色が表示されないのでしょうか?
フラグメントシェーダの//決め打ちコードののようにマジックんナンバーで取りえず記述すると色が表示されます。これは何を間違えたのでしょうか?
//フラグメントシェーダー色設定 コメント部のコード
cpp
1//描画 2void Rectangle::DrawGraph(int x, int y) 3{ 4 5 int xx = (-WIDTH / 2) + (CELL / 2) + x; 6 int yy = (HEIGHT / 2) - (CELL / 2) - y; 7 8 9 setMove(glm::ivec2(xx, yy)); 10 11 glUseProgram(ShaderProgram); 12 13 //描画シェーダー 14 glUniformMatrix3fv(glGetUniformLocation(ShaderProgram, "ViewMatrix"), 1, GL_FALSE, glm::value_ptr(getViewMatrix())); 15 glUniformMatrix3fv(glGetUniformLocation(ShaderProgram, "WorldMatrix"), 1, GL_FALSE, glm::value_ptr(getWorldMatrix())); 16 17 glUniform4f(glGetUniformLocation(ShaderProgram, "fragColor"), 1.0f, 0.0f, 0.0f, 0.5f); //フラグメントシェーダー 色設定 18 19 20 glBindVertexArray(vao); 21 22 glDrawElements(GL_TRIANGLES, sizeof(index), GL_UNSIGNED_INT, NULL); 23}
GLSL
1//頂点シェーダー 2#version 400 3 4layout (location = 0) in vec2 pos; 5 6uniform vec4 fragColor;//色情報 7 8uniform mat3 ViewMatrix; 9uniform mat3 WorldMatrix; 10 11out vec4 out_Color; 12 13void main() 14{ 15 out_Color = fragColor;//色情報をフラグメントに渡す 16 17 18 19 vec3 position = vec3(pos,1.0); 20 gl_Position = vec4(position * WorldMatrix * ViewMatrix ,1.0); 21}
GLSL
1#version 400 2 3out vec4 Color; 4 5in vec4 out_Color; 6 7void main() 8{ 9 Color = out_Color; 10 11// Color = vec4(1.0f, 0.0f, 0.0f, 0.5f);//決め打ちコード 12}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。