原创 OpenGL学习笔记——02

2009-7-12 11:44 2755 9 9 分类: 软件与OS

对图形点鼠标左键矩形会转动,中键停止。


2d7f6221-5065-43d0-a711-7122351bf576.jpg


#include <GL/glut.h>
#include <stdlib.h>


static GLfloat spin = 0.0;


void init()
{
 glClearColor(0.0, 0.0, 0.0, 0.0);
 glShadeModel(GL_FLAT);
}
void display(void)
{
 glClear(GL_COLOR_BUFFER_BIT);
 glPushMatrix();
 glRotatef(spin, 0.0, 0.0, 1.0);
 glColor3f(1.0, 1.0, 1.0);
 glRectf(-25.0, -25.0, 25.0, 25.0);
 glPopMatrix();
 glutSwapBuffers();
}


void spinDisplay(void)
{
 spin = (spin + 2.0) ;
 if (spin > 360.0)
  spin = spin - 360.0;
 glutPostRedisplay();
}


void reshape(int w, int h)
{
 glViewport(0, 0, (GLsizei) w, (GLsizei) h);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);
 glMatrixMode(GL_MODELVIEW);
 glLoadIdentity();
}


void mouse(int button, int state, int x, int y)
{
 switch(button)
 {
  case GLUT_LEFT_BUTTON :
   if(state == GLUT_DOWN)
    glutIdleFunc(spinDisplay);
   break;
  case GLUT_MIDDLE_BUTTON :
   if(state == GLUT_DOWN)
    glutIdleFunc(NULL);
   break;
  default:
   break;
 }
}



int main(int argc, char** argv)
{
 glutInit(&argc, argv);
 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
 glutInitWindowSize(250, 250);
 glutInitWindowPosition(100, 100);
 glutCreateWindow("OpenGL Test");
 init();
 glutDisplayFunc(display);
 glutReshapeFunc(reshape);
 glutMouseFunc(mouse);
 glutMainLoop();
 return 0;
}

文章评论0条评论)

登录后参与讨论
我要评论
0
9
关闭 站长推荐上一条 /2 下一条