www.pudn.com > GLBLEND.rar > GLBLEND.C


#include  
#include  
#include  
 
#pragma warning( disable : 4305 )  
  
GLdouble rot_angle; 
 
void init(void)  
{ 
    rot_angle = 0.0; 
 
    glClearColor(1.0, 1.0, 1.0, 1.0); 
    glShadeModel(GL_FLAT); 
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 
 
    glEnable(GL_BLEND); 
} 
 
void display(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT); 
 
    glPushMatrix(); 
        glRotated(rot_angle, 1.0, 0.0, 0.0); 
        glRotated(rot_angle, 0.0, 1.0, 0.0); 
        glBegin(GL_TRIANGLE_STRIP); 
            glColor4f(1.0, 0.0, 0.0, 0.3); 
            glVertex3f(-1.0, -1.0, 1.0); 
            glVertex3f(1.0, -1.0, 1.0); 
            glVertex3f(-1.0, 1.0, 1.0); 
            glVertex3f(1.0, 1.0, 1.0); 
            glColor4f(0.0, 1.0, 0.0, 0.3); 
            glVertex3f(-1.0, 1.0, -1.0); 
            glVertex3f(1.0, 1.0, -1.0); 
            glColor4f(0.0, 0.0, 1.0, 0.3); 
            glVertex3f(-1.0, -1.0, -1.0); 
            glVertex3f(1.0, -1.0, -1.0); 
        glEnd(); 
        glBegin(GL_TRIANGLE_STRIP); 
            glColor4f(1.0, 1.0, 0.0, 0.3); 
            glVertex3f(-1.0, 1.0, -1.0); 
            glVertex3f(-1.0, 1.0, 1.0); 
            glVertex3f(-1.0, -1.0, -1.0); 
            glVertex3f(-1.0, -1.0, 1.0); 
            glColor4f(0.0, 1.0, 1.0, 0.3); 
            glVertex3f(1.0, -1.0, -1.0); 
            glVertex3f(1.0, -1.0, 1.0); 
            glColor4f(1.0, 0.0, 1.0, 0.3); 
            glVertex3f(1.0, 1.0, -1.0); 
            glVertex3f(1.0, 1.0, 1.0); 
        glEnd(); 
    glPopMatrix(); 
 
    glutSwapBuffers(); 
} 
 
void reshape (int w, int h) 
{ 
    glViewport(0, 0, (GLsizei) w, (GLsizei) h);  
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    gluPerspective(60.0, (GLfloat)w / (GLfloat)h, 1.0, 10.0); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
    gluLookAt(0.0, 0.0, 4.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); 
} 
 
void keyboard (unsigned char key, int x, int y) 
{ 
    switch (key)  
    { 
        case 27: 
        case 'Q': 
        case 'q': 
            exit(0); 
            break; 
    } 
} 
 
void idle(void) 
{ 
    rot_angle += 0.25; 
 
    if( rot_angle > 360.0 ) 
        rot_angle -= 360.0; 
 
    glutPostRedisplay(); 
} 
 
int main(int argc, char** argv) 
{ 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA); 
    glutInitWindowSize(250, 250);  
    glutInitWindowPosition(100, 100); 
    glutCreateWindow("Transparent Cube"); 
    init(); 
    glutDisplayFunc(display);  
    glutReshapeFunc(reshape); 
    glutKeyboardFunc(keyboard); 
    glutIdleFunc(idle); 
    glutMainLoop(); 
    return 0; 
}