質問編集履歴

4

文章を編集

2020/10/24 08:10

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- OpenGL uniform vec4 変数にソースファイルから値を設定出来ない原因が知りたい
1
+ OpenGL uniform vec4 変数にソースファイルから値を設定出来ない原因が知りたい
test CHANGED
@@ -1,6 +1,10 @@
1
1
  提示コードですなぜglUniform4f();関数で頂点シェーダに値を設定しているのにも関わらず画面に色が表示されないのでしょうか?
2
2
 
3
3
  フラグメントシェーダの//決め打ちコードののようにマジックんナンバーで取りえず記述すると色が表示されます。これは何を間違えたのでしょうか?
4
+
5
+
6
+
7
+ //フラグメントシェーダー色設定 コメント部のコード
4
8
 
5
9
 
6
10
 

3

タイトルを編集しました。

2020/10/24 08:10

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- OpenGL uniform vec4 fragColor変数にソースファイルから値を設定出来ない原因が知りたい。
1
+ OpenGL uniform vec4 変数にソースファイルから値を設定出来ない原因が知りたい。
test CHANGED
File without changes

2

文章を編集しました。

2020/10/24 01:51

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  提示コードですなぜglUniform4f();関数で頂点シェーダに値を設定しているのにも関わらず画面に色が表示されないのでしょうか?
2
2
 
3
- フラグメントシェーダの//決め打ちコードののようにマジックんナンバーで取りえず記述すると色が表示されます。これは何を間違えたのでしょうか?ちゃんと確認をしましたがどうしてもわかりません。
3
+ フラグメントシェーダの//決め打ちコードののようにマジックんナンバーで取りえず記述すると色が表示されます。これは何を間違えたのでしょうか?
4
4
 
5
5
 
6
6
 

1

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

2020/10/23 06:39

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- OpenGLで線描画出来ない原因が知りたい。
1
+ OpenGL uniform vec4 fragColor変数にソースファイルから値を設定出来ない原因が知りたい。
test CHANGED
@@ -1,4 +1,94 @@
1
- 提示コードですなぜ線描画が出来ないのでしょうか?glDrawArrays();関数すが線の場合始と終点みのはなので2つで描出来るはずなのでしょう描画出来ませんこはどうしたらのでしょうか?
1
+ 提示コードですなぜglUniform4f();関数でシェーダに値を設定しているにも関わらず画面に色表示さいのでしょうか?
2
+
3
+ フラグメントシェーダの//決め打ちコードののようにマジックんナンバーで取りえず記述すると色が表示されます。これは何を間違えたのでしょうか?ちゃんと確認をしましたがどうしてもわかりません。
4
+
5
+
6
+
7
+ ```cpp
8
+
9
+ //描画
10
+
11
+ void Rectangle::DrawGraph(int x, int y)
12
+
13
+ {
14
+
15
+
16
+
17
+ int xx = (-WIDTH / 2) + (CELL / 2) + x;
18
+
19
+ int yy = (HEIGHT / 2) - (CELL / 2) - y;
20
+
21
+
22
+
23
+
24
+
25
+ setMove(glm::ivec2(xx, yy));
26
+
27
+
28
+
29
+ glUseProgram(ShaderProgram);
30
+
31
+
32
+
33
+ //描画シェーダー
34
+
35
+ glUniformMatrix3fv(glGetUniformLocation(ShaderProgram, "ViewMatrix"), 1, GL_FALSE, glm::value_ptr(getViewMatrix()));
36
+
37
+ glUniformMatrix3fv(glGetUniformLocation(ShaderProgram, "WorldMatrix"), 1, GL_FALSE, glm::value_ptr(getWorldMatrix()));
38
+
39
+
40
+
41
+ glUniform4f(glGetUniformLocation(ShaderProgram, "fragColor"), 1.0f, 0.0f, 0.0f, 0.5f); //フラグメントシェーダー 色設定
42
+
43
+
44
+
45
+
46
+
47
+ glBindVertexArray(vao);
48
+
49
+
50
+
51
+ glDrawElements(GL_TRIANGLES, sizeof(index), GL_UNSIGNED_INT, NULL);
52
+
53
+ }
54
+
55
+ ```
56
+
57
+
58
+
59
+
60
+
61
+ ```GLSL
62
+
63
+ //頂点シェーダー
64
+
65
+ #version 400
66
+
67
+
68
+
69
+ layout (location = 0) in vec2 pos;
70
+
71
+
72
+
73
+ uniform vec4 fragColor;//色情報
74
+
75
+
76
+
77
+ uniform mat3 ViewMatrix;
78
+
79
+ uniform mat3 WorldMatrix;
80
+
81
+
82
+
83
+ out vec4 out_Color;
84
+
85
+
86
+
87
+ void main()
88
+
89
+ {
90
+
91
+ out_Color = fragColor;//色情報をフラグメントに渡す
2
92
 
3
93
 
4
94
 
@@ -6,133 +96,41 @@
6
96
 
7
97
 
8
98
 
99
+ vec3 position = vec3(pos,1.0);
100
+
101
+ gl_Position = vec4(position * WorldMatrix * ViewMatrix ,1.0);
102
+
103
+ }
104
+
105
+ ```
9
106
 
10
107
 
11
108
 
12
109
 
13
110
 
111
+ ```GLSL
14
112
 
15
- ```cpp
16
-
17
- #include "DrawLine.hpp"
113
+ #version 400
18
114
 
19
115
 
20
116
 
117
+ out vec4 Color;
21
118
 
22
119
 
120
+
23
- DrawLine::DrawLine(glm::vec4 clr)
121
+ in vec4 out_Color;
122
+
123
+
124
+
125
+ void main()
24
126
 
25
127
  {
26
128
 
27
- glm::vec4 c;
28
-
29
- c.x = 1.0f / 255.0f;
129
+ Color = out_Color;
30
-
31
- c.y = 1.0f / 255.0f;
32
-
33
- c.z = 1.0f / 255.0f;
34
130
 
35
131
 
36
132
 
37
- c.x = c.x * clr.x;
38
-
39
- c.y = c.y * clr.y;
40
-
41
- c.z = c.z * clr.z;
42
-
43
- c.w = clr.w; //アルファチャンネル
44
-
45
-
46
-
47
-
48
-
49
- /*
50
-
51
- struct Position
52
-
53
- {
54
-
55
- GLfloat x;
56
-
57
- GLfloat y;
58
-
59
- GLfloat z;
60
-
61
- // float z;
62
-
63
- };
64
-
65
-
66
-
67
- struct Position pos[2];
68
-
69
- */
70
-
71
-
72
-
73
-
74
-
75
- //とりえず決め打ちの描画座標
76
-
77
- pos[0] = Position { 0.0f, 0.0f,1.0 };
78
-
79
- pos[1] = Position { 0.5f, 0.5f,1.0 };
80
-
81
-
82
-
83
-
84
-
85
- mColor = c;
86
-
87
-
88
-
89
- //vao
90
-
91
- glGenVertexArrays(1,&vao);
92
-
93
- glBindVertexArray(vao);
94
-
95
-
96
-
97
- //vbo
98
-
99
- glGenBuffers(1,&vbo);
100
-
101
- glBindBuffer(GL_ARRAY_BUFFER, vbo);
102
-
103
- glBufferData(GL_ARRAY_BUFFER, (sizeof(pos) / sizeof(pos[0])) * sizeof(Position), pos, GL_STATIC_DRAW);
104
-
105
-
106
-
107
- //頂点座標
108
-
109
- glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(Position), NULL);
110
-
111
- glEnableVertexAttribArray(0);
112
-
113
-
114
-
115
-
116
-
117
-
118
-
119
- }
120
-
121
-
122
-
123
-
124
-
125
- void DrawLine::Draw(int x, int y)
126
-
127
- {
128
-
129
- glBindVertexArray(vao);
130
-
131
- glColor3f(0.0,0.0,1.0);
132
-
133
- // printf("あああああ\n");
133
+ // Color = vec4(1.0f, 0.0f, 0.0f, 0.5f);//決め打ちコード
134
-
135
- glDrawArrays(GL_LINE,0,2);
136
134
 
137
135
  }
138
136