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

質問編集履歴

2

やり方について

2020/06/03 07:51

投稿

beginee
beginee

スコア1

title CHANGED
@@ -1,1 +1,1 @@
1
- OpenGLで三次元ピラミッド作成
1
+ OpenGLの使い方について
body CHANGED
@@ -1,106 +1,9 @@
1
- ### 前提・実現したいこと
2
-
3
- プログラミングを独学中のものです
4
- 3Dモデル作成に興味があり勉強しているんですが
5
- OpenGLで三次元のピラミッドを作りたいです。(For loopを使用して)
6
- ただの、ピラミッドではなく箱が積み重なるのを意識して作れたいんですが
7
- 実際に作ったところ横長にしか作れずに、どうすれば綺麗な三次元のピラミッドを
8
- 作れるか教わりたいです。
1
+ OpenGlの使い方を知りたいです。
9
- まだまだ、初心者なんですがよろしくお願いします。
10
-
11
- ### 発生している問題・エラーメッセージ
12
-
13
- ピラミッド風なのは表示されるが
14
- 形が違う
15
- ```
16
-
17
- #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
18
- #include <iostream>
19
- #include <OpenGL/OpenGL.h>
20
- #include <GLUT/GLUT.h>
21
- #include <math.h>
22
- float rotation = 0.0;
23
-
24
-
25
- void reshape(int width, int height){
26
- glViewport(0, 0, width, height);
27
- glMatrixMode(GL_PROJECTION);
28
- glLoadIdentity();
29
- gluPerspective(45.0, (double)width/height, 0.1, 100.0);
30
- glMatrixMode(GL_MODELVIEW);
31
- glLoadIdentity();
32
- gluLookAt(0.0, 2.0, 13.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 );
33
- }
34
- void setup(){
35
- float lightPosition[4] = {5.25, 2.0, 0.25, 1.0};
36
- float ambient[4] = {0.3, 0.5, 0.0, 1.0};
37
- float diffuse[4] = {1.0, 1.0, 0.3, 1.0};
38
- float specular[4] = {1.0, 1.0, 1.0, 1.0};
39
- float shininess[1] = {20.0};
40
-
41
- glEnable(GL_DEPTH_TEST);
42
- glEnable(GL_LIGHTING);
43
- glEnable(GL_LIGHT0);
44
- glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
45
- glMaterialfv(GL_FRONT, GL_AMBIENT, ambient);
46
- glMaterialfv(GL_FRONT, GL_DIFFUSE, diffuse);
47
- glMaterialfv(GL_FRONT, GL_SPECULAR, specular);
48
- glMaterialfv(GL_FRONT, GL_SHININESS, shininess);
49
- }
50
-
51
-
52
- void display(void){
53
- glEnable(GL_DEPTH_TEST);
54
- glClearColor(0.0, 0.0, 0.0, 1.0);
2
+ glColor3f(1.0, 1.0, 1.0);
55
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
56
- int i = 1;
57
- int x;
58
-
59
- for(i=1;i<7;i++)
60
- {
61
- {
62
- for(x=0; x<i ; x++)
63
- {glPushMatrix();
64
- glTranslatef(1-x+sqrt(i)+(i)+1/6,0,1/6);
65
- glutSolidCube(1.0);
3
+ glBegin(GL_POLYGON);
66
- glPopMatrix();
67
- }
68
- glTranslatef(-1, -1, 0);
4
+ glVertex2f(-0.5, 0.5);
69
- }
70
- glRotatef(rotation,0,1,0);
5
+ glVertex2f( 0.5, 0.5);
71
- }
72
- glPopMatrix();
73
- glPopMatrix();
74
- glutSwapBuffers();
75
- }
76
-
77
- void idle(){
78
- rotation++;
79
- glutPostRedisplay();
6
+ glVertex2f( 0.5,-0.5);
80
- }
81
- int main(int argc, char * argv[]) {
82
-
83
- glutInit(&argc, argv);
7
+ glVertex2f(-0.5,-0.5);
84
- glutInitWindowSize(500, 500);
85
- glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
86
- glutCreateWindow("for");
87
- glutDisplayFunc(display);
88
- glutReshapeFunc(reshape);
89
- //glutIdleFunc(idle);
90
- setup();
8
+ glEnd();
91
- glutMainLoop();
92
-
93
- return 0;
94
- }
95
-
96
- ```ここに言語名を入力
97
- C++
98
- ```
99
-
100
- ### 試したこと
101
-
102
- サイトとかでも探したりして、何度も試したんですが全然実行ができない状態です。
103
-
104
- ### 補足情報(FW/ツールのバージョンなど)
105
-
106
- ここにより詳細な情報記載しください。
9
+ 上のコード使っ球体とかも作れるんでしょうか?

1

質問

2020/06/03 07:51

投稿

beginee
beginee

スコア1

title CHANGED
File without changes
body CHANGED
@@ -6,6 +6,7 @@
6
6
  ただの、ピラミッドではなく箱が積み重なるのを意識して作れたいんですが
7
7
  実際に作ったところ横長にしか作れずに、どうすれば綺麗な三次元のピラミッドを
8
8
  作れるか教わりたいです。
9
+ まだまだ、初心者なんですがよろしくお願いします。
9
10
 
10
11
  ### 発生している問題・エラーメッセージ
11
12