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

質問編集履歴

1

ソースコードの追加 文章訂正

2020/05/28 11:35

投稿

ssssssa
ssssssa

スコア4

title CHANGED
File without changes
body CHANGED
@@ -63,4 +63,72 @@
63
63
 
64
64
  glutMainLoop();
65
65
  return(0);
66
+ }
67
+
68
+ 上のソースコードだと正方形が回転しています。
69
+ そこで下のソースコードに変更すると画面が真っ暗になってしまいます。
70
+ どのように変えると動くようになりますか。
71
+
72
+ #include <stdlib.h>
73
+ #include "GL/glut.h"
74
+ #include <GL/gl.h>
75
+ #include <GL/glu.h>
76
+ #include <math.h>
77
+ #define KEY_ESC 27
78
+
79
+ float theta =0.0; /*物体の回転角度*/
80
+
81
+ void display(void)
82
+ {
83
+ glClear(GL_COLOR_BUFFER_BIT);
84
+
85
+ glPushMatrix();
86
+ glTranslatef(0.0,1.0,30.0);
87
+ glRotatef(3.0*theta,0.2,-1.0,0.0);
88
+ glRotatef(-90.0,1.0,0.2,0.0);
89
+ glColor3f(1.0,1.0,0.0);
90
+ glutWireSphere(1.0,15,15); /*球*/
91
+ glPopMatrix();
92
+
93
+ glutSwapBuffers();/*バッファをスワップする*/
94
+ }
95
+
96
+ void idle(void)/*イベントがなければidleがつねに実行される*/
97
+ {
98
+ theta=fmod(theta+0.1,360.0);/*回転角を0°~360°まで0.5°づつ増加させる)*/
99
+ glutPostRedisplay();/*ディスプレイコールバックバック関数(display)を実行*/
100
+ }
101
+
102
+ void myKbd(unsigned char key,int x,int y)
103
+ {
104
+ if(key == KEY_ESC) exit(0);
105
+ }
106
+
107
+ void myInit(char *progname)
108
+ {
109
+ int width=500,height=500;
110
+ float aspect =(float)width/(float)height;
111
+
112
+ glutInitWindowPosition(0,0);
113
+ glutInitWindowSize(width,height);
114
+ glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
115
+ /*ダブルバッファの宣言*/
116
+ glutCreateWindow(progname);
117
+ glClearColor(0.0,0.0,0.0,1.0);
118
+ glutKeyboardFunc(myKbd);
119
+ glMatrixMode(GL_PROJECTION);
120
+ glLoadIdentity();
121
+ gluPerspective(45.0,aspect,1.0,10.0);
122
+ glMatrixMode(GL_MODELVIEW);
123
+ }
124
+
125
+ int main (int argc, char** argv)
126
+ {
127
+ glutInit(&argc,argv);
128
+ myInit(argv[0]);
129
+ glutDisplayFunc(display);
130
+ glutIdleFunc(idle);
131
+ /*イベントが無い場合にはidleを繰り返し実行する*/
132
+ glutMainLoop();
133
+ return(0);
66
134
  }