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

質問編集履歴

5

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

2020/09/15 12:04

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- GLSLを使った描画ができない理由が知りたい。
1
+ GLSLを使った描画ができない理由が知りたい。Github全ソースあり
body CHANGED
File without changes

4

文章にGithubを追加

2020/09/15 12:04

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -11,11 +11,11 @@
11
11
 
12
12
  ※ コメント部/////で囲ってあるコードが該当コードです。
13
13
  参考サイト: https://tokoik.github.io/GLFWdraft.pdf (163ページに数式を移しました(ビュー行列))
14
+ Github: https://github.com/Shigurechan/project
14
15
 
15
16
 
16
17
 
17
18
 
18
-
19
19
  ```GLSL
20
20
  #version 400
21
21
  //頂点シェーダー

3

提示コードを編集しました。

2020/09/15 12:02

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -203,6 +203,9 @@
203
203
 
204
204
  ```
205
205
 
206
+
207
+
208
+
206
209
  ```cpp
207
210
  #include "Game.hpp"
208
211
  #include <iostream>
@@ -213,10 +216,10 @@
213
216
  #include <sstream>
214
217
  #include "Vector.hpp"
215
218
 
216
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////
219
+
217
220
  //透視投影変換行列を作る
218
221
  void Game::create_maxtri_mp(float top, float bottom, float left, float right,
219
- float far, float near, float result[4][4])
222
+ float near, float far, float result[4][4])
220
223
  {
221
224
  result[0][0] = (2 * near) / (right - left);
222
225
  result[0][1] = 0;
@@ -238,8 +241,8 @@
238
241
  result[3][2] = -1;
239
242
  result[3][3] = 0;
240
243
  }
241
- ////////////////////////////////////////////////////////////////////////////////////////////////////////
242
244
 
245
+
243
246
  //コンストラクタ
244
247
  Game::Game()
245
248
  {
@@ -304,7 +307,7 @@
304
307
  program = glCreateProgram();
305
308
  GLuint out_vert = glCreateShader(GL_VERTEX_SHADER);
306
309
  GLuint out_frag = glCreateShader(GL_FRAGMENT_SHADER);
307
-
310
+
308
311
  //頂点シェーダーを読み込み
309
312
  std::string fileName = "Basic.vert";
310
313
  std::ifstream shaderfile(fileName);
@@ -315,13 +318,13 @@
315
318
  std::string str = sstream.str();
316
319
  const char* cc = str.c_str();
317
320
 
318
- out_vert = glCreateShader(GL_VERTEX_SHADER);
321
+ out_vert = glCreateShader(GL_VERTEX_SHADER);
319
- glShaderSource(out_vert, 1, &cc, nullptr);
322
+ glShaderSource(out_vert, 1, &cc, nullptr);
320
- glCompileShader(out_vert);
323
+ glCompileShader(out_vert);
321
324
  //printf("Basic.vert ファイル読み込み\n");
322
325
 
323
326
  GetShader_Log(out_vert, GL_COMPILE_STATUS);
324
- glAttachShader(program, out_vert);
327
+ glAttachShader(program, out_vert);
325
328
  shaderfile.close();
326
329
 
327
330
  }
@@ -346,16 +349,25 @@
346
349
  glShaderSource(out_frag, 1, &cc, nullptr);
347
350
  glCompileShader(out_frag);
348
351
  GetShader_Log(out_frag, GL_COMPILE_STATUS);
349
- glAttachShader(program, out_frag);
352
+ glAttachShader(program, out_frag);
350
353
  shaderfile.close();
351
354
 
352
- // printf("Basic.frag ファイル読み込み\n");
355
+ // printf("Basic.frag ファイル読み込み\n");
353
356
  }
354
357
  else {
355
358
  shaderfile.close();
356
- printf("ファイル: %s が読み込めませんでした。",fileName.c_str());
359
+ printf("ファイル: %s が読み込めませんでした。", fileName.c_str());
357
360
  }
361
+
362
+
363
+
358
-
364
+ glLinkProgram(program);
365
+ //使わなくなったシェーダーオブジェクトを削除
366
+ glDeleteShader(out_frag);
367
+ glDeleteShader(out_vert);
368
+ glUseProgram(program);
369
+
370
+
359
371
  //シェーダーに値を渡す
360
372
  /////////////////////////////////////////////////////////////////////////////////////////////////////////////
361
373
  //*****************************************************************************
@@ -367,25 +379,25 @@
367
379
 
368
380
 
369
381
  //頂点シェーダー
370
- glBindAttribLocation(program,0,"Vertex");
382
+ glBindAttribLocation(program, 0, "Vertex");
371
- glUniformMatrix4fv(glGetUniformLocation(program,"scale"),0, GL_TRUE, &scale[0][0]);
383
+ glUniformMatrix4fv(glGetUniformLocation(program, "scale"), 0, GL_TRUE, &scale[0][0]);
372
384
  glUniformMatrix4fv(glGetUniformLocation(program, "rotate"), 1, GL_TRUE, &rotate[0][0]);
373
385
  glUniformMatrix4fv(glGetUniformLocation(program, "move"), 2, GL_TRUE, &move[0][0]);
374
386
 
375
387
 
376
388
  glUniformMatrix4fv(glGetUniformLocation(program, "MP"), 3, GL_TRUE, &mp[0][0]);
377
- //*****************************************************************************
389
+ //*****************************************************************************
378
- ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
390
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
391
+ glUseProgram(program);
379
392
 
380
- glLinkProgram(program);
381
- //使わなくなったシェーダーオブジェクトを削除
382
- glDeleteShader(out_frag);
383
- glDeleteShader(out_vert);
384
393
 
394
+
385
395
  return true;
386
396
  }
387
397
 
388
398
 
399
+
400
+
389
401
  //初期化
390
402
  bool Game::Initialization()
391
403
  {
@@ -449,7 +461,7 @@
449
461
  glBufferData(GL_ARRAY_BUFFER, sizeof(Vertex), Vertex, GL_STATIC_DRAW);///////
450
462
  glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, 0);
451
463
  glEnableVertexAttribArray(0);
452
- glEnableClientState(GL_VERTEX_ARRAY);//クライアントで頂点を有効にする。
464
+ //glEnableClientState(GL_VERTEX_ARRAY);//クライアントで頂点を有効にする。
453
465
 
454
466
 
455
467
 
@@ -477,30 +489,15 @@
477
489
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
478
490
  glUseProgram(program);
479
491
 
480
- ///////////////////////////
481
492
 
482
- glDrawArrays(GL_POLYGON,0,18);/////////////////////////////////////
483
493
 
484
- /////////////////////////
494
+ glDrawArrays(GL_POLYGON,0,18);
485
495
 
486
496
 
487
497
 
488
498
 
489
499
 
490
500
 
491
- //頂点位置テスト
492
- //glBegin(GL_POLYGON);
493
-
494
- for (int i = 0; i < 6; i++)
495
- {
496
-
497
- // glVertex3f(Vertex[i][0], Vertex[i][1],Vertex[i][2]);
498
- }
499
-
500
- //glEnd();
501
-
502
-
503
-
504
501
  glViewport(0, 0, WIDTH, HEIGHT);
505
502
  glfwSwapBuffers(Window);
506
503
  glfwWaitEvents();

2

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

2020/09/15 11:43

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- ワールド行列とビュー行列シェーダーで計算をするコードを実装したが何を間違えたかわからない。
1
+ GLSL使っ描画できない理由が知りたい
body CHANGED
File without changes

1

文章を編集しました。

2020/09/15 10:39

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -10,12 +10,12 @@
10
10
 
11
11
 
12
12
  ※ コメント部/////で囲ってあるコードが該当コードです。
13
+ 参考サイト: https://tokoik.github.io/GLFWdraft.pdf (163ページに数式を移しました(ビュー行列))
13
14
 
14
15
 
15
16
 
16
17
 
17
18
 
18
-
19
19
  ```GLSL
20
20
  #version 400
21
21
  //頂点シェーダー