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

📄 single_double.c

📁 计算机图形学~想必是很多人需要的~在此共享一下
💻 C
字号:
/* *  double.c *  This program demonstrates double buffering for  *  flicker-free animation.  The left and middle mouse *  buttons start and stop the spinning motion of the square. */

/* E. Angel, Interactive Computer Graphics */
/* A Top-Down Approach with OpenGL, Third Edition */
/* Addison-Wesley Longman, 2003 */
#include <GL/glut.h>#include <stdlib.h>static GLfloat spin = 0.0;    int singleb, doubleb;void displayd(void){    glClear (GL_COLOR_BUFFER_BIT);    glRectf (-25.0, -25.0, 25.0, 25.0);    glutSwapBuffers ();}void displays(void){    glClear (GL_COLOR_BUFFER_BIT);    glRectf (-25.0, -25.0, 25.0, 25.0);    glFlush();}void spinDisplay (void){    spin = spin + 2.0;    if (spin > 360.0)	spin = spin - 360.0;	glutSetWindow(singleb);	glLoadIdentity();    glRotatef (spin, 0.0, 0.0, 1.0);    glutPostRedisplay(); 	glutSetWindow(doubleb);	glLoadIdentity();    glRotatef (spin, 0.0, 0.0, 1.0);    glutPostRedisplay();}void myinit (void){    glClearColor (0.0, 0.0, 0.0, 1.0);    glColor3f (1.0, 1.0, 1.0);    glShadeModel (GL_FLAT);}void mouse(int btn, int state, int x, int y){if(btn==GLUT_LEFT_BUTTON && state==GLUT_DOWN)  glutIdleFunc(spinDisplay);if(btn==GLUT_MIDDLE_BUTTON && state==GLUT_DOWN)   glutIdleFunc(NULL);}void myReshape(int w, int h){    glViewport(0, 0, w, h);    glMatrixMode(GL_PROJECTION);    glLoadIdentity();    if (w <= h) 	glOrtho (-50.0, 50.0, -50.0*(GLfloat)h/(GLfloat)w, 	    50.0*(GLfloat)h/(GLfloat)w, -1.0, 1.0);    else 	glOrtho (-50.0*(GLfloat)w/(GLfloat)h, 	    50.0*(GLfloat)w/(GLfloat)h, -50.0, 50.0, -1.0, 1.0);    glMatrixMode(GL_MODELVIEW);    glLoadIdentity ();}/*  Main Loop *  Open window with initial window size, title bar,  *  RGBA display mode, and handle input events. */int main(int argc, char** argv){	glutInit(&argc,argv);	glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);	singleb=glutCreateWindow("single buffered");    myinit ();	glutDisplayFunc(displays);     glutReshapeFunc (myReshape);    glutIdleFunc (spinDisplay);    glutMouseFunc (mouse);	glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);	doubleb=glutCreateWindow("double buffered");    myinit ();	glutDisplayFunc(displayd);    glutReshapeFunc (myReshape);    glutIdleFunc (spinDisplay);    glutMouseFunc (mouse);	glutMainLoop();}

⌨️ 快捷键说明

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