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

OpenGL

开发平台:

Visual C++

  1. //  本程序主要用于演示两种不同的着色模式 #include <GL/glut.h> #include <stdlib.h>
  2. #include <GL/glaux.h> void init(void)  {
  3. glClearColor (0.0, 0.0, 0.0, 0.0); } void triangle(void) {
  4. glBegin (GL_TRIANGLES);
  5. glColor3f (1.0, 0.0, 0.0);
  6. glVertex2f (2.0, 10.0);
  7. glColor3f (0.0, 1.0, 0.0);
  8. glVertex2f (15.0, 10.0);
  9. glColor3f (0.0, 0.0, 1.0);
  10. glVertex2f (2, 23.0);
  11. glEnd(); } void display(void) {
  12. glClear (GL_COLOR_BUFFER_BIT);
  13. // 设置光滑着色模式
  14. glShadeModel (GL_SMOOTH);
  15. triangle ();
  16. glPushMatrix();
  17. //  设置单一着色模式
  18. glShadeModel (GL_FLAT);
  19. glTranslatef(14,0,0);
  20. triangle ();
  21. glPopMatrix();
  22. glFlush (); } void reshape (int w, int h) {
  23. glViewport (0, 0, (GLsizei) w, (GLsizei) h);
  24. glMatrixMode (GL_PROJECTION);
  25. glLoadIdentity ();
  26. if (w <= h)
  27. gluOrtho2D (0.0, 30.0, 0.0, 30.0 * (GLfloat) h/(GLfloat) w);
  28. else
  29. gluOrtho2D (0.0, 30.0 * (GLfloat) w/(GLfloat) h, 0.0, 30.0);
  30. glMatrixMode(GL_MODELVIEW); } void keyboard(unsigned char key, int x, int y) {
  31. switch (key) 
  32. {
  33. case 27:
  34. exit(0);
  35. break;
  36. } } int main(int argc, char** argv) {
  37. glutInit(&argc, argv);
  38. glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
  39. glutInitWindowSize (500, 500); 
  40. glutInitWindowPosition (100, 100);
  41. glutCreateWindow (argv[0]);
  42. init ();
  43. glutDisplayFunc(display); 
  44. glutReshapeFunc(reshape);
  45. glutKeyboardFunc (keyboard);
  46. glutMainLoop();
  47. return 0;
  48. }