?? opengl_logo.c
字號:
/* * Main.c * * This file is part of the openGL-logo demo. * (c) Henk Kok (kok@wins.uva.nl) * * Copying, redistributing, etc is permitted as long as this copyright * notice and the Dutch variable names :) stay in tact. */#include <GL/glut.h>#include <stdlib.h>#include <stdio.h>#include <math.h>GLfloat lightpos[4] = { 1.0, 1.0, 1.0, 0.0 };GLfloat lightamb[4] = { 0.3, 0.3, 0.3, 1.0 };GLfloat lightdif[4] = { 0.8, 0.8, 0.8, 1.0 };float speed=0, progress = 1;void SetCamera(void);extern void randomize(void);extern void def_logo(void);extern void draw_logo(void);void do_display (void){ SetCamera(); draw_logo(); glFlush(); glutSwapBuffers();}void display(void){ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); do_display();}void myinit (void){ glShadeModel (GL_SMOOTH); glEnable(GL_DEPTH_TEST); glLightfv(GL_LIGHT0, GL_POSITION, lightpos); glLightfv(GL_LIGHT0, GL_AMBIENT, lightamb); glLightfv(GL_LIGHT0, GL_DIFFUSE, lightdif); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glColor3f(1.0, 1.0, 1.0); glClearColor(0.0, 0.0, 0.0, 1.0); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glEnable(GL_NORMALIZE); def_logo(); glCullFace(GL_BACK); glEnable(GL_CULL_FACE);}/* ARGSUSED1 */void parsekey(unsigned char key, int x, int y){ switch (key) { case 27: exit(0); break; case 13: break; case ' ': progress = 1; randomize(); break; }}/* ARGSUSED1 */void parsekey_special(int key, int x, int y){ switch (key) { case GLUT_KEY_UP: break; case GLUT_KEY_DOWN: break; case GLUT_KEY_RIGHT: break; case GLUT_KEY_LEFT: break; }}void Animate(void){ speed = -0.95*speed + progress*0.05; if (progress > 0.0 && speed < 0.0003) speed = 0.0003; if (speed > 0.01) speed = 0.01; progress = progress - speed; if (progress < 0.0) { progress = 0.0; speed = 0; } glutPostRedisplay();}void myReshape(int w, int h){ glMatrixMode (GL_MODELVIEW); glViewport (0, 0, w, h); glLoadIdentity(); SetCamera();}void SetCamera(void){ glMatrixMode (GL_PROJECTION); glLoadIdentity (); glFrustum (-0.1333, 0.1333, -0.1, 0.1, 0.2, 150.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0,1.5,2, 0,1.5,0, 0,1,0); glTranslatef(0.0, -8.0, -45.0); glRotatef(-progress*720, 0.0, 1.0, 0.0);}int main(int argc, char *argv[]){ glutInitDisplayMode(GLUT_DEPTH | GLUT_RGB | GLUT_DOUBLE | GLUT_MULTISAMPLE); glutInitWindowPosition(200, 0); glutInitWindowSize(640, 480); glutCreateWindow("Rotating OpenGL Logo"); glutDisplayFunc(display); glutKeyboardFunc(parsekey); glutSpecialFunc(parsekey_special); glutReshapeFunc(myReshape); glutIdleFunc(Animate); randomize(); myinit(); glutSwapBuffers(); glutMainLoop(); return 0; /* ANSI C requires main to return int. */}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -