//Vertex alphas are basically the same //as vertex colors. They just set the //alpha of selected vertices instead of //just setting the whole object to a //selected alpha. //So anyway, I did this with a normal quad //but it does work with any shape you choose //Here it is: //I have started my quad. //I then set the color red for the first vertex, with an alpha of only 0.2. //I then draw that vertex. //The next is green, with an alpha value of 1. //Then blue with an alpha value of 0.2. //And finally white with an alpha value of 1. //glBegin(GL_QUADS); //glColor4f(1,0,0,0.2); //glVertex3f(-0.5, -0.5, 0.0); //glColor4f(0,1,0,1); //glVertex3f(-0.5, 0.5, 0.0); //glColor4f(0,0,1,0.2); //glVertex3f(0.5, 0.5, 0.0); //glColor4f(1,1,1,1); //glVertex3f(0.5, -0.5, 0.0); //glEnd(); //Just remember to call each vertex after you call the color //for this to work. #include #include void square (void) { glBegin(GL_QUADS); glColor4f(1,0,0,0.2); //red, alpha 0.2 glVertex3f(-0.5, -0.5, 0.0); glColor4f(0,1,0,1); //green, alpha 1 glVertex3f(-0.5, 0.5, 0.0); glColor4f(0,0,1,0.2); //blue, alpha 0.2 glVertex3f(0.5, 0.5, 0.0); glColor4f(1,1,1,1); //white, alpha 1 glVertex3f(0.5, -0.5, 0.0); glEnd(); } void display (void) { glClearColor (0.0,0.0,0.0,1.0); glClear (GL_COLOR_BUFFER_BIT); glLoadIdentity(); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glTranslatef(0,0,-1); square(); glFlush(); } void reshape (int w, int h) { glViewport (0, 0, (GLsizei)w, (GLsizei)h); glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective (60, (GLfloat)w / (GLfloat)h, 1.0, 100.0); glMatrixMode (GL_MODELVIEW); } int main (int argc, char **argv) { glutInit (&argc, argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGBA); glutInitWindowSize (500, 500); glutInitWindowPosition (100, 100); glutCreateWindow ("A basic OpenGL Window"); glutDisplayFunc (display); glutReshapeFunc (reshape); glutMainLoop (); return 0; }