• openGL 第章节 例子


    1. #include "stdafx.h"
    2. #include
    3. #include
    4. #include
    5. using namespace std;
    6. GLsizei winWidth = 600, winHeight = 500;
    7. GLint xRaster = 25, yRaster = 150 , xRastar1=25;
    8. GLubyte label[36] = { 'J', 'a', 'n', 'F', 'e', 'b', 'M', 'a', 'r',
    9. 'A', 'p', 'r', 'M', 'a', 'y', 'J', 'u', 'n',
    10. 'J', 'u', 'l', 'A', 'u', 'g', 'S', 'e', 'p',
    11. 'O', 'c', 't', 'N', 'o', 'v', 'D', 'e', 'c' };
    12. GLint dataValue[12] = { 420, 342, 324, 310, 262, 185,
    13. 190, 196, 217, 240, 312, 438 };
    14. void init(void)
    15. {
    16.     glClearColor(1.0, 1.0, 1.0, 1.0);
    17.     glMatrixMode(GL_PROJECTION);
    18.     gluOrtho2D(0.0, 600.0, 0.0, 500.0);
    19. }
    20. void lineGraph(void)
    21. {
    22.     GLint month, k;
    23.     GLint x = 30;
    24.     
    25.     glClear(GL_COLOR_BUFFER_BIT);
    26.     glColor3f(0.0, 0.0, 1.0);
    27.     glBegin(GL_LINE_STRIP); /*划线 不闭合折线*/
    28.     for (k = 0; k < 12; k++)
    29.         glVertex2i(x + k * 50, dataValue[k]); /*30,420  80,342  130,324 180,310 230,262 280,185  330,190  380,196  430,217  480,240  530,312  580,438*/
    30.     glEnd();
    31.     glColor3f(1.0, 0.0, 0.0);
    32.     for (k = 0; k < 12; k++)
    33.     {
    34.         glRasterPos2i(xRaster + k * 50, dataValue[k] - 4); /*更改光栅点的位置 第一个参数由第31行减5,第二个参数由第31行减4*/
    35.         glutBitmapCharacter(GLUT_BITMAP_9_BY_15, '*'); /*在每一个折点上画 '*' ps:不能有空格 GLUT_BITMAP_9_BY_15:一种固定宽度字体,每个字符都放在一个9x15像素的矩形框内*/
    36.     }
    37.     glColor3f(1.0, 0.0, 0.0); /*设置字体颜色*/
    38.     xRastar1 = 20;
    39.     for (month = 0; month < 12; month++)
    40.     {
    41.         glRasterPos2i(xRastar1, yRaster); /*x=20,y=150*/
    42.         for (k = 3 * month; k < 3 * month + 3; k++) /*每一个内循环写一个月份*/ {
    43.             glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, label[k]);/*GLUT_BITMAP_HELVETICA_12 一种12点均匀间距的Helvetica字体  */
    44.         }
    45.         xRastar1 += 50; /*x坐标向前推进50个单位*/
    46.     }
    47.     glFlush();
    48. }
    49. void barChart(void)
    50. {
    51.     GLint month, k;
    52.     cout << "222"<< "\n";
    53.     glClear(GL_COLOR_BUFFER_BIT);
    54.     glColor3f(1.0, 0.0, 0.0);
    55.     for (k = 0; k < 12; k++)
    56.         glRecti(20 + k * 50, 165, 40 + k * 50, dataValue[k]); /*画矩形 x左下,y左下,x右上,y右上 每个条形图间隔20个单位*/
    57.     glColor3f(0.0, 0.0, 0.0);
    58.     xRaster = 20;
    59.     for (month = 0; month < 12; month++)
    60.     {
    61.         glRasterPos2i(xRaster, yRaster);
    62.         for (k = 3 * month; k < 3 * month + 3; k++) {
    63.             glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, label[k]);
    64.         }
    65.         xRaster += 50;
    66.     }
    67.     glFlush();
    68. }
    69. void winReshapeFcn(GLint newWidth, GLint newHeight)
    70. {
    71.     glMatrixMode(GL_PROJECTION);
    72.     glLoadIdentity();
    73.     gluOrtho2D(0.0, GLdouble(newWidth), 0.0, GLdouble(newHeight));
    74.     glClear(GL_COLOR_BUFFER_BIT);
    75. }
    76. void main(int argc, char** argv)
    77. {
    78.     glutInit(&argc, argv);
    79.     glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    80.     glutInitWindowPosition(100, 100);
    81.     glutInitWindowSize(winWidth, winHeight);
    82.     glutCreateWindow("多点画线");
    83.     init();
    84.     glutDisplayFunc(lineGraph);
    85.     glutReshapeFunc(winReshapeFcn);
    86.     glutMainLoop();

  • 相关阅读:
    13、注解配置SpringMVC
    Android 9.0 屏蔽设备的WLAN功能
    PLECS
    生物安全柜检测与验证标准指南及验证设备选型建议
    Python学习-----Day09
    Jenkins buildDescription 设置html格式及url
    「Java代码审计」Java代码审计基础知识
    构建Flink第一个应用程序
    C++阶段05笔记03【C++提高编程资料(string容器、vector容器、deque容器、stack容器)】
    web网页设计实例作业HTML+CSS+JavaScript蔬菜水果商城购物设计
  • 原文地址:https://blog.csdn.net/zhanglixin999/article/details/132724595