回答編集履歴

1

修正したコードを追記

2019/04/23 20:29

投稿

Bongo
Bongo

スコア10807

test CHANGED
@@ -23,3 +23,161 @@
23
23
 
24
24
 
25
25
  ではどうでしょうか。なにか他にエラーが発生するようでしたらコメントいただけると助かります。
26
+
27
+
28
+
29
+ #追記
30
+
31
+ 下記部分を変更してみたところ...
32
+
33
+
34
+
35
+ **main**
36
+
37
+ ```C++
38
+
39
+ // 省略
40
+
41
+
42
+
43
+ bool readShaderSource(const char *name, std::vector<GLchar> &buffer)
44
+
45
+ {
46
+
47
+ // 省略
48
+
49
+
50
+
51
+ // 最後にストリームを閉じて戻る部分が欠落していたようなので追加しました
52
+
53
+ file.close();
54
+
55
+ return true;
56
+
57
+ }
58
+
59
+
60
+
61
+ // 省略
62
+
63
+
64
+
65
+ // 頂点位置の順序を逆Z字形に変更
66
+
67
+ Object::Vertex vertex[] = {
68
+
69
+ 0.5f, 0.5f,
70
+
71
+ -0.5f, 0.5f,
72
+
73
+ 0.5f, -0.5f,
74
+
75
+ -0.5f, -0.5f,
76
+
77
+ };
78
+
79
+
80
+
81
+ // UVの順序を逆Z字形に変更
82
+
83
+ Object::Vertex uv[] = {
84
+
85
+ 1.0f, 0.0f,
86
+
87
+ 0.0f, 0.0f,
88
+
89
+ 1.0f, 1.0f,
90
+
91
+ 0.0f, 1.0f,
92
+
93
+ };
94
+
95
+
96
+
97
+ // 省略
98
+
99
+ ```
100
+
101
+
102
+
103
+ **Object**
104
+
105
+ ```C++
106
+
107
+ // 省略
108
+
109
+
110
+
111
+ Object(GLint size, GLsizei vertexcount, const Vertex *vertex, const GLuint program, const Vertex *uv, std::string texname)
112
+
113
+ {
114
+
115
+ // 省略
116
+
117
+
118
+
119
+ glBindBuffer(GL_ARRAY_BUFFER, vbo[1]);
120
+
121
+
122
+
123
+ // 2 * sizeof(Vertex)をvertexcount * sizeof(Vertex)に変更
124
+
125
+ glBufferData(GL_ARRAY_BUFFER, vertexcount * sizeof(Vertex), uv, GL_STATIC_DRAW);
126
+
127
+
128
+
129
+ int uvLocation = glGetAttribLocation(program, "uv");
130
+
131
+ glVertexAttribPointer(uvLocation, 2, GL_FLOAT, GL_FALSE, 0, 0);
132
+
133
+
134
+
135
+ // 省略
136
+
137
+ }
138
+
139
+
140
+
141
+ // 省略
142
+
143
+ ```
144
+
145
+
146
+
147
+ **Shape**
148
+
149
+ ```C++
150
+
151
+ // 省略
152
+
153
+
154
+
155
+ virtual void execute() const
156
+
157
+ {
158
+
159
+ // 折れ線で描画する
160
+
161
+ glBindTexture(GL_TEXTURE_2D, object->texID);
162
+
163
+
164
+
165
+ // GL_LINE_LOOPをGL_TRIANGLE_STRIPに変更
166
+
167
+ glDrawArrays(GL_TRIANGLE_STRIP, 0, vertexcount);
168
+
169
+ }
170
+
171
+
172
+
173
+ // 省略
174
+
175
+ ```
176
+
177
+
178
+
179
+ 下図のような描画結果が得られました。
180
+
181
+
182
+
183
+ ![結果](87d4274fe83b2aa95a955e300ace735f.png)