新闻  |   论坛  |   博客  |   在线研讨会
OpenGL学习笔记——02
0750long | 2009-07-13 16:23:36    阅读:1772   发布文章

OpenGL学习笔记——02

 

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

#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;
}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客