質問編集履歴
2
文章を修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -41,7 +41,7 @@
|
|
41
41
|
|
42
42
|
glBindVertexArray(vao);
|
43
43
|
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
44
|
-
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,
|
44
|
+
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, eao);
|
45
45
|
|
46
46
|
// printf("%d\n",obj.vertexIndex.size());
|
47
47
|
// printf("%d\n",obj.vertex.size());
|
@@ -63,10 +63,12 @@
|
|
63
63
|
|
64
64
|
setRotate(glm::vec3(1, 1, 1),0); //回転
|
65
65
|
|
66
|
-
|
66
|
+
|
67
67
|
glGenTextures(1, &textureID); //テクスチャIDの生成
|
68
68
|
glBindTexture(GL_TEXTURE_2D, textureID); //IDバインド
|
69
69
|
|
70
|
+
glEnable(GL_TEXTURE_2D);
|
71
|
+
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
70
72
|
|
71
73
|
//テクスチャ生成
|
72
74
|
FrameWork::TextureFile file = FrameWork::LoadTexture("Assets/debug_texture.png");
|
@@ -78,10 +80,10 @@
|
|
78
80
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
79
81
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
|
80
82
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
|
81
|
-
|
83
|
+
glGenerateMipmap(GL_TEXTURE_2D);
|
82
84
|
|
83
|
-
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
84
85
|
|
86
|
+
|
85
87
|
//バインド解除
|
86
88
|
glBindVertexArray(0);
|
87
89
|
glBindBuffer(GL_ARRAY_BUFFER, 0);
|
@@ -94,13 +96,13 @@
|
|
94
96
|
shader->setEnable();
|
95
97
|
glBindVertexArray(vao);
|
96
98
|
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
97
|
-
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,
|
99
|
+
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, eao);
|
98
100
|
glBindTexture(GL_TEXTURE_2D, textureID); //IDバインド
|
99
101
|
|
100
102
|
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(GLfloat) * 8 * obj.vertex.size(), obj.vertex.data());
|
101
|
-
|
103
|
+
|
102
104
|
glActiveTexture(GL_TEXTURE0); //テクスチャ有効
|
103
|
-
|
105
|
+
|
104
106
|
//Transform
|
105
107
|
setPosition(glm::vec3(0, 0, -50)); //座標
|
106
108
|
setScale(glm::vec3(30, 30, 30)); //スケール
|
@@ -134,8 +136,13 @@
|
|
134
136
|
{
|
135
137
|
ObjFile obj;
|
136
138
|
|
137
|
-
std::vector<
|
139
|
+
std::vector<int> vertexIndex;
|
140
|
+
std::vector<int> uvIndex;
|
141
|
+
std::vector<int> normalIndex;
|
142
|
+
|
138
143
|
std::vector<glm::vec3> vertex;
|
144
|
+
std::vector<glm::vec2> uv;
|
145
|
+
std::vector<glm::vec3> normal;
|
139
146
|
|
140
147
|
FILE *file = fopen(fileName, "r");
|
141
148
|
|
@@ -161,21 +168,23 @@
|
|
161
168
|
glm::vec3 vert;
|
162
169
|
fscanf(file, "%f %f %fn", &vert.x, &vert.y, &vert.z);
|
163
170
|
//vertex.push_back(vert);
|
164
|
-
|
171
|
+
vertex.push_back(vert);
|
165
172
|
}
|
166
173
|
else if (strcmp(line, "vt") == 0)
|
167
174
|
{
|
168
175
|
|
169
176
|
glm::vec2 u;
|
170
177
|
fscanf(file, "%f %fn", &u.x, &u.y);
|
178
|
+
std::vector<int> vertexIndex;
|
179
|
+
|
171
|
-
|
180
|
+
uv.push_back(u);
|
172
181
|
}
|
173
182
|
else if (strcmp(line, "vn") == 0)
|
174
183
|
{
|
175
184
|
|
176
185
|
glm::vec3 norm;
|
177
186
|
fscanf(file, "%f %f %fn", &norm.x, &norm.y, &norm.z);
|
178
|
-
|
187
|
+
normal.push_back(norm);
|
179
188
|
}
|
180
189
|
else if (strcmp(line, "f") == 0)
|
181
190
|
{
|
@@ -193,32 +202,54 @@
|
|
193
202
|
vertexIndex.push_back(v[1]);
|
194
203
|
vertexIndex.push_back(v[2]);
|
195
204
|
|
196
|
-
obj.vertexIndex.push_back(v[0]
|
205
|
+
obj.vertexIndex.push_back(v[0]);
|
197
|
-
obj.vertexIndex.push_back(v[1]
|
206
|
+
obj.vertexIndex.push_back(v[1]);
|
198
|
-
obj.vertexIndex.push_back(v[2]
|
207
|
+
obj.vertexIndex.push_back(v[2]);
|
199
208
|
|
200
|
-
obj.uvIndex.push_back(u[0]);
|
209
|
+
//obj.uvIndex.push_back(u[0]);
|
201
|
-
obj.uvIndex.push_back(u[1]);
|
210
|
+
//obj.uvIndex.push_back(u[1]);
|
202
|
-
obj.uvIndex.push_back(u[2]);
|
211
|
+
//obj.uvIndex.push_back(u[2]);
|
203
212
|
|
213
|
+
uvIndex.push_back(u[0]);
|
214
|
+
uvIndex.push_back(u[1]);
|
215
|
+
uvIndex.push_back(u[2]);
|
216
|
+
|
217
|
+
|
204
|
-
|
218
|
+
normalIndex.push_back(n[0]);
|
205
|
-
|
219
|
+
normalIndex.push_back(n[1]);
|
206
|
-
|
220
|
+
normalIndex.push_back(n[2]);
|
221
|
+
|
222
|
+
//obj.normalIndex.push_back(n[0]);
|
223
|
+
//obj.normalIndex.push_back(n[1]);
|
224
|
+
//obj.normalIndex.push_back(n[2]);
|
207
225
|
}
|
208
226
|
}
|
209
227
|
}
|
210
|
-
|
228
|
+
|
211
|
-
for
|
229
|
+
for( unsigned int i = 0; i < vertexIndex.size(); i++ )
|
212
230
|
{
|
213
|
-
int vert = vertexIndex[i];
|
214
231
|
|
232
|
+
// Get the indices of its attributes
|
233
|
+
unsigned int v = vertexIndex[i];
|
234
|
+
unsigned int u = uvIndex[i];
|
235
|
+
unsigned int n = normalIndex[i];
|
236
|
+
|
237
|
+
// Get the attributes thanks to the index
|
238
|
+
glm::vec3 ve = vertex[ v - 1 ];
|
239
|
+
glm::vec2 uu = uv[ u - 1 ];
|
240
|
+
glm::vec3 no = normal[ n - 1 ];
|
241
|
+
|
242
|
+
// Put the attributes in buffers
|
215
|
-
|
243
|
+
obj.vertex.push_back(ve);
|
244
|
+
obj.uv.push_back(uu);
|
216
|
-
|
245
|
+
obj.normal .push_back(no);
|
246
|
+
|
217
|
-
|
247
|
+
}
|
218
248
|
|
219
|
-
|
249
|
+
|
220
|
-
|
250
|
+
|
221
251
|
attribute = obj;
|
222
252
|
}
|
223
253
|
|
254
|
+
|
224
255
|
```
|
1
文章を修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,6 +6,9 @@
|
|
6
6
|
シェーダーファイルでUV座標と頂点座標が送られているか確認
|
7
7
|
|
8
8
|
|
9
|
+
##### Gtihub
|
10
|
+
[https://github.com/Shigurechan/GL](https://github.com/Shigurechan/GL)
|
11
|
+
|
9
12
|

|
10
13
|

|
11
14
|
|