質問編集履歴

1

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

2020/05/28 11:35

投稿

ssssssa
ssssssa

スコア4

test CHANGED
File without changes
test CHANGED
@@ -129,3 +129,139 @@
129
129
  return(0);
130
130
 
131
131
  }
132
+
133
+
134
+
135
+ 上のソースコードだと正方形が回転しています。
136
+
137
+ そこで下のソースコードに変更すると画面が真っ暗になってしまいます。
138
+
139
+ どのように変えると動くようになりますか。
140
+
141
+
142
+
143
+ #include <stdlib.h>
144
+
145
+ #include "GL/glut.h"
146
+
147
+ #include <GL/gl.h>
148
+
149
+ #include <GL/glu.h>
150
+
151
+ #include <math.h>
152
+
153
+ #define KEY_ESC 27
154
+
155
+
156
+
157
+ float theta =0.0; /*物体の回転角度*/
158
+
159
+
160
+
161
+ void display(void)
162
+
163
+ {
164
+
165
+ glClear(GL_COLOR_BUFFER_BIT);
166
+
167
+
168
+
169
+ glPushMatrix();
170
+
171
+ glTranslatef(0.0,1.0,30.0);
172
+
173
+ glRotatef(3.0*theta,0.2,-1.0,0.0);
174
+
175
+ glRotatef(-90.0,1.0,0.2,0.0);
176
+
177
+ glColor3f(1.0,1.0,0.0);
178
+
179
+ glutWireSphere(1.0,15,15); /*球*/
180
+
181
+ glPopMatrix();
182
+
183
+
184
+
185
+ glutSwapBuffers();/*バッファをスワップする*/
186
+
187
+ }
188
+
189
+
190
+
191
+ void idle(void)/*イベントがなければidleがつねに実行される*/
192
+
193
+ {
194
+
195
+ theta=fmod(theta+0.1,360.0);/*回転角を0°~360°まで0.5°づつ増加させる)*/
196
+
197
+ glutPostRedisplay();/*ディスプレイコールバックバック関数(display)を実行*/
198
+
199
+ }
200
+
201
+
202
+
203
+ void myKbd(unsigned char key,int x,int y)
204
+
205
+ {
206
+
207
+ if(key == KEY_ESC) exit(0);
208
+
209
+ }
210
+
211
+
212
+
213
+ void myInit(char *progname)
214
+
215
+ {
216
+
217
+ int width=500,height=500;
218
+
219
+ float aspect =(float)width/(float)height;
220
+
221
+
222
+
223
+ glutInitWindowPosition(0,0);
224
+
225
+ glutInitWindowSize(width,height);
226
+
227
+ glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA);
228
+
229
+ /*ダブルバッファの宣言*/
230
+
231
+ glutCreateWindow(progname);
232
+
233
+ glClearColor(0.0,0.0,0.0,1.0);
234
+
235
+ glutKeyboardFunc(myKbd);
236
+
237
+ glMatrixMode(GL_PROJECTION);
238
+
239
+ glLoadIdentity();
240
+
241
+ gluPerspective(45.0,aspect,1.0,10.0);
242
+
243
+ glMatrixMode(GL_MODELVIEW);
244
+
245
+ }
246
+
247
+
248
+
249
+ int main (int argc, char** argv)
250
+
251
+ {
252
+
253
+ glutInit(&argc,argv);
254
+
255
+ myInit(argv[0]);
256
+
257
+ glutDisplayFunc(display);
258
+
259
+ glutIdleFunc(idle);
260
+
261
+ /*イベントが無い場合にはidleを繰り返し実行する*/
262
+
263
+ glutMainLoop();
264
+
265
+ return(0);
266
+
267
+ }