teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

文章を修正

2021/10/19 08:15

投稿

退会済みユーザー
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, vio);
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
- //glGenerateMipmap(GL_TEXTURE_2D);
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, vio);
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<float> vertexIndex;
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
- obj.vertex.push_back(vert);
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
- obj.uv.push_back(u);
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
- obj.normal.push_back(norm);
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] - 1);
205
+ obj.vertexIndex.push_back(v[0]);
197
- obj.vertexIndex.push_back(v[1] - 1);
206
+ obj.vertexIndex.push_back(v[1]);
198
- obj.vertexIndex.push_back(v[2] - 1);
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
- obj.normalIndex.push_back(n[0]);
218
+ normalIndex.push_back(n[0]);
205
- obj.normalIndex.push_back(n[1]);
219
+ normalIndex.push_back(n[1]);
206
- obj.normalIndex.push_back(n[2]);
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 (int i = 0; i < vertexIndex.size(); i++)
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
- obj.vertex.push_back(vertex[vert - 1]);
243
+ obj.vertex.push_back(ve);
244
+ obj.uv.push_back(uu);
216
- // printf("%f %f %f \n", obj.vertex.at(i).x, obj.vertex.at(i).y, obj.vertex.at(i).z);
245
+ obj.normal .push_back(no);
246
+
217
- }
247
+ }
218
248
 
219
- //printf("%d\n\n",obj.vertex.size());
249
+
220
- */
250
+
221
251
  attribute = obj;
222
252
  }
223
253
 
254
+
224
255
  ```

1

文章を修正

2021/10/19 08:15

投稿

退会済みユーザー
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
  ![イメージ説明](059b43180eb5dcbce6c0aea8c649fa53.png)
10
13
  ![イメージ説明](455a91e17b4b0b0d5b452d01c1b276ac.png)
11
14