⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 opengl_logo.c

📁 学习c++必备
💻 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. */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -