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

OpenGL

开发平台:

Visual C++

  1. #include <GL/glut.h>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #pragma warning( disable : 4305 ) 
  5.  
  6. GLdouble rot_angle;
  7. void init(void) 
  8. {
  9.     rot_angle = 0.0;
  10.     glClearColor(1.0, 1.0, 1.0, 1.0);
  11.     glShadeModel(GL_FLAT);
  12.     glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  13.     glEnable(GL_BLEND);
  14. }
  15. void display(void)
  16. {
  17.     glClear(GL_COLOR_BUFFER_BIT);
  18.     glPushMatrix();
  19.         glRotated(rot_angle, 1.0, 0.0, 0.0);
  20.         glRotated(rot_angle, 0.0, 1.0, 0.0);
  21.         glBegin(GL_TRIANGLE_STRIP);
  22.             glColor4f(1.0, 0.0, 0.0, 0.3);
  23.             glVertex3f(-1.0, -1.0, 1.0);
  24.             glVertex3f(1.0, -1.0, 1.0);
  25.             glVertex3f(-1.0, 1.0, 1.0);
  26.             glVertex3f(1.0, 1.0, 1.0);
  27.             glColor4f(0.0, 1.0, 0.0, 0.3);
  28.             glVertex3f(-1.0, 1.0, -1.0);
  29.             glVertex3f(1.0, 1.0, -1.0);
  30.             glColor4f(0.0, 0.0, 1.0, 0.3);
  31.             glVertex3f(-1.0, -1.0, -1.0);
  32.             glVertex3f(1.0, -1.0, -1.0);
  33.         glEnd();
  34.         glBegin(GL_TRIANGLE_STRIP);
  35.             glColor4f(1.0, 1.0, 0.0, 0.3);
  36.             glVertex3f(-1.0, 1.0, -1.0);
  37.             glVertex3f(-1.0, 1.0, 1.0);
  38.             glVertex3f(-1.0, -1.0, -1.0);
  39.             glVertex3f(-1.0, -1.0, 1.0);
  40.             glColor4f(0.0, 1.0, 1.0, 0.3);
  41.             glVertex3f(1.0, -1.0, -1.0);
  42.             glVertex3f(1.0, -1.0, 1.0);
  43.             glColor4f(1.0, 0.0, 1.0, 0.3);
  44.             glVertex3f(1.0, 1.0, -1.0);
  45.             glVertex3f(1.0, 1.0, 1.0);
  46.         glEnd();
  47.     glPopMatrix();
  48.     glutSwapBuffers();
  49. }
  50. void reshape (int w, int h)
  51. {
  52.     glViewport(0, 0, (GLsizei) w, (GLsizei) h); 
  53.     glMatrixMode(GL_PROJECTION);
  54.     glLoadIdentity();
  55.     gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 1.0, 10.0);
  56.     glMatrixMode(GL_MODELVIEW);
  57.     glLoadIdentity();
  58.     gluLookAt(0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0);
  59. }
  60. void keyboard (unsigned char key, int x, int y)
  61. {
  62.     switch (key) 
  63.     {
  64.         case 27:
  65.         case 'Q':
  66.         case 'q':
  67.             exit(0);
  68.             break;
  69.     }
  70. }
  71. void idle(void)
  72. {
  73.     rot_angle += 0.25;
  74.     if( rot_angle > 360.0 )
  75.         rot_angle -= 360.0;
  76.     glutPostRedisplay();
  77. }
  78. int main(int argc, char** argv)
  79. {
  80.     glutInit(&argc, argv);
  81.     glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
  82.     glutInitWindowSize(250, 250); 
  83.     glutInitWindowPosition(100, 100);
  84.     glutCreateWindow("Transparent Cube");
  85.     init();
  86.     glutDisplayFunc(display); 
  87.     glutReshapeFunc(reshape);
  88.     glutKeyboardFunc(keyboard);
  89.     glutIdleFunc(idle);
  90.     glutMainLoop();
  91.     return 0;
  92. }