SMOOTH.C
上传用户:tengyuc
上传日期:2007-08-14
资源大小:722k
文件大小:1k
- // 本程序主要用于演示两种不同的着色模式
#include <GL/glut.h>
#include <stdlib.h>
- #include <GL/glaux.h>
void init(void)
{
- glClearColor (0.0, 0.0, 0.0, 0.0);
}
void triangle(void)
{
- glBegin (GL_TRIANGLES);
- glColor3f (1.0, 0.0, 0.0);
- glVertex2f (2.0, 10.0);
- glColor3f (0.0, 1.0, 0.0);
- glVertex2f (15.0, 10.0);
- glColor3f (0.0, 0.0, 1.0);
- glVertex2f (2, 23.0);
- glEnd();
}
void display(void)
{
- glClear (GL_COLOR_BUFFER_BIT);
- // 设置光滑着色模式
- glShadeModel (GL_SMOOTH);
- triangle ();
-
- glPushMatrix();
- // 设置单一着色模式
- glShadeModel (GL_FLAT);
- glTranslatef(14,0,0);
- triangle ();
- glPopMatrix();
- glFlush ();
}
void reshape (int w, int h)
{
- glViewport (0, 0, (GLsizei) w, (GLsizei) h);
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity ();
- if (w <= h)
- gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w);
- else
- gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0);
- glMatrixMode(GL_MODELVIEW);
}
void keyboard(unsigned char key, int x, int y)
{
- switch (key)
- {
- case 27:
- exit(0);
- break;
- }
}
int main(int argc, char** argv)
{
- glutInit(&argc, argv);
- glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
- glutInitWindowSize (500, 500);
- glutInitWindowPosition (100, 100);
- glutCreateWindow (argv[0]);
- init ();
- glutDisplayFunc(display);
- glutReshapeFunc(reshape);
- glutKeyboardFunc (keyboard);
- glutMainLoop();
- return 0;
- }