MODEL.C
上传用户:tengyuc
上传日期:2007-08-14
资源大小:722k
文件大小:2k
源码类别:

OpenGL

开发平台:

Visual C++

  1. //  该程序主要演示几何模型变换
  2. #include <GL/glut.h>
  3. #include <stdlib.h>
  4. void init(void) 
  5. {
  6.    glClearColor (0.0, 0.0, 0.0, 0.0);
  7.    glShadeModel (GL_FLAT);
  8. }
  9. void draw_triangle(void)
  10. {
  11.    glBegin (GL_LINE_LOOP);
  12.    glVertex2f(0.0, 25.0);
  13.    glVertex2f(25.0, -25.0);
  14.    glVertex2f(-25.0, -25.0);
  15.    glEnd();
  16. }
  17. void display(void)
  18. {
  19.    glClear (GL_COLOR_BUFFER_BIT);
  20.    glColor3f (1.0, 1.0, 1.0);
  21.    glLoadIdentity ();
  22.    glColor3f (1.0, 1.0, 1.0);
  23.    draw_triangle ();
  24.    glEnable (GL_LINE_STIPPLE);
  25.    glLineStipple (1, 0xF0F0);
  26.    glLoadIdentity ();
  27.    glTranslatef (-20.0, 0.0, 0.0);
  28.    draw_triangle ();
  29.    glLineStipple (1, 0xF00F);
  30.    glLoadIdentity ();
  31.    glScalef (1.5, 0.5, 1.0);
  32.    draw_triangle ();
  33.    glLineStipple (1, 0x8888);
  34.    glLoadIdentity ();
  35.    glRotatef (90.0, 0.0, 0.0, 1.0);
  36.    draw_triangle ();
  37.    glDisable (GL_LINE_STIPPLE);
  38.    glFlush ();
  39. }
  40. void reshape (int w, int h)
  41. {
  42.    glViewport (0, 0, (GLsizei) w, (GLsizei) h);
  43.    glMatrixMode (GL_PROJECTION);
  44.    glLoadIdentity ();
  45.    if (w <= h)
  46.       glOrtho (-50.0, 50.0, -50.0*(GLfloat)h/(GLfloat)w,
  47.          50.0*(GLfloat)h/(GLfloat)w, -1.0, 1.0);
  48.    else
  49.       glOrtho (-50.0*(GLfloat)w/(GLfloat)h,
  50.          50.0*(GLfloat)w/(GLfloat)h, -50.0, 50.0, -1.0, 1.0);
  51.    glMatrixMode(GL_MODELVIEW);
  52. }
  53. void keyboard(unsigned char key, int x, int y)
  54. {
  55.    switch (key) {
  56.       case 27:
  57.          exit(0);
  58.          break;
  59.    }
  60. }
  61. int main(int argc, char** argv)
  62. {
  63.    glutInit(&argc, argv);
  64.    glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
  65.    glutInitWindowSize (500, 500); 
  66.    glutInitWindowPosition (100, 100);
  67.    glutCreateWindow (argv[0]);
  68.    init ();
  69.    glutDisplayFunc(display); 
  70.    glutReshapeFunc(reshape);
  71.    glutKeyboardFunc (keyboard);
  72.    glutMainLoop();
  73.    return 0;
  74. }