質問編集履歴
5
タイトルを編集しました。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
GLSLを使った描画ができない理由が知りたい。
|
1
|
+
GLSLを使った描画ができない理由が知りたい。Github全ソースあり
|
body
CHANGED
File without changes
|
4
文章にGithubを追加
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
提示コードを編集しました。
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
|
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
|
-
|
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
タイトルを編集しました。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
GLSLを使った描画ができない理由が知りたい。
|
body
CHANGED
File without changes
|
1
文章を編集しました。
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
|
//頂点シェーダー
|