• 5.5 编程实例-红蓝三角形


    注:教材中原程序中第55行glLoadIdentity()位置不对,现在更正至第31行。图5.17同时更正如上图。

    
    
     1 #include <GL/glut.h>
     2 
     3 typedef GLfloat point2d[2]; // a point data type
     4 
     5 void triangle( point2d a, point2d b, point2d c) // display a triangle
     6 
     7 {
     8 
     9     glBegin(GL_TRIANGLES);
    10 
    11     glVertex2fv(a);
    12 
    13     glVertex2fv(b);
    14 
    15     glVertex2fv(c);
    16 
    17     glEnd();
    18 
    19 }
    20 
    21 void display(void)
    22 
    23 {
    24 
    25     point2d v[3] = {{-1.0, -0.58}, {1.0, -0.58}, {0.0, 1.15}}; //initial triangle vertices
    26 
    27     glClear(GL_COLOR_BUFFER_BIT); // Clear display window
    28 
    29     glColor3f(0.0,0.0,1.0); // Set fill color to blue
    30 
    31     glLoadIdentity();//应该放在此处,保证每次显示正确
    32 
    33     glViewport(0, 0, 300, 400); // Set left viewport
    34 
    35     triangle(v[0], v[1], v[2]);
    36 
    37     glColor3f(1.0,0.0,0.0); // Set fill color to red
    38 
    39     glViewport(300, 0, 300, 400); // Set right viewport
    40 
    41     glRotatef(90.0, 0.0, 0.0, 1.0); // Rotate about z axis
    42 
    43     triangle(v[0], v[1], v[2]); // Display blue triangle
    44 
    45     glFlush();
    46 
    47 }
    48 
    49 void init()
    50 
    51 {
    52 
    53     glMatrixMode(GL_PROJECTION);
    54 
    55     //glLoadIdentity();//如果放在此处,会导致第一次显示正确,再次刷新时图形旋转
    56 
    57     gluOrtho2D(-2.0, 2.0, -2.0, 2.0);
    58 
    59     glMatrixMode(GL_MODELVIEW);
    60 
    61     glClearColor(1.0, 1.0, 1.0,1.0);
    62 
    63 }
    64 
    65 void main(int argc, char **argv)
    66 
    67 {
    68 
    69     glutInit(&argc, argv);
    70 
    71     glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB);
    72 
    73     glutInitWindowSize(600, 400);
    74 
    75     glutCreateWindow("Triangle");
    76 
    77     glutDisplayFunc(display);
    78 
    79     init();
    80 
    81     glutMainLoop();
    82 
    83 }
    
    
    
     

    附上本实验的VC++工程代码(VC++2008)

  • 相关阅读:
    Nginx安装与运行配置总结
    不知道为什么随笔分类出不来
    springboot打war包
    python爬取网站页面时,部分标签无指定属性而报错
    python爬取某站新闻,并分析最近新闻关键词
    插了带蠕虫的U盘后,文件不见了怎么快速恢复
    CompTIA Security+ 常见知识点
    JAVA学习--集合的遍历
    JAVA学习--ArrayList使用方法:List的主要实现类
    JAVA学习--异常Exception的处理
  • 原文地址:https://www.cnblogs.com/opengl/p/3790445.html
Copyright © 2020-2023  润新知