openGL 第章节 例子

cpp 复制代码
#include "stdafx.h"
#include <GL/glut.h>
#include <iostream>
#include <iostream>

using namespace std;



GLsizei winWidth = 600, winHeight = 500;
GLint xRaster = 25, yRaster = 150 , xRastar1=25;


GLubyte label[36] = { 'J', 'a', 'n', 'F', 'e', 'b', 'M', 'a', 'r',
'A', 'p', 'r', 'M', 'a', 'y', 'J', 'u', 'n',
'J', 'u', 'l', 'A', 'u', 'g', 'S', 'e', 'p',
'O', 'c', 't', 'N', 'o', 'v', 'D', 'e', 'c' };
GLint dataValue[12] = { 420, 342, 324, 310, 262, 185,
190, 196, 217, 240, 312, 438 };


void init(void)
{
    glClearColor(1.0, 1.0, 1.0, 1.0);
    glMatrixMode(GL_PROJECTION);
    gluOrtho2D(0.0, 600.0, 0.0, 500.0);
}


void lineGraph(void)
{
    GLint month, k;
    GLint x = 30;
    

    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(0.0, 0.0, 1.0);
    glBegin(GL_LINE_STRIP); /*划线 不闭合折线*/
    for (k = 0; k < 12; k++)
        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*/
    glEnd();


    glColor3f(1.0, 0.0, 0.0);
    for (k = 0; k < 12; k++)
    {
        glRasterPos2i(xRaster + k * 50, dataValue[k] - 4); /*更改光栅点的位置 第一个参数由第31行减5,第二个参数由第31行减4*/
        glutBitmapCharacter(GLUT_BITMAP_9_BY_15, '*'); /*在每一个折点上画 '*' ps:不能有空格 GLUT_BITMAP_9_BY_15:一种固定宽度字体,每个字符都放在一个9x15像素的矩形框内*/
    }


    glColor3f(1.0, 0.0, 0.0); /*设置字体颜色*/
    xRastar1 = 20;
    for (month = 0; month < 12; month++)
    {
        glRasterPos2i(xRastar1, yRaster); /*x=20,y=150*/
        for (k = 3 * month; k < 3 * month + 3; k++) /*每一个内循环写一个月份*/ {
            glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, label[k]);/*GLUT_BITMAP_HELVETICA_12 一种12点均匀间距的Helvetica字体  */
        }
        xRastar1 += 50; /*x坐标向前推进50个单位*/
    }
    glFlush();
}


void barChart(void)
{
    GLint month, k;

    cout << "222"<< "\n";
    glClear(GL_COLOR_BUFFER_BIT);
    glColor3f(1.0, 0.0, 0.0);
    for (k = 0; k < 12; k++)
        glRecti(20 + k * 50, 165, 40 + k * 50, dataValue[k]); /*画矩形 x左下,y左下,x右上,y右上 每个条形图间隔20个单位*/
    glColor3f(0.0, 0.0, 0.0);
    xRaster = 20;
    for (month = 0; month < 12; month++)
    {
        glRasterPos2i(xRaster, yRaster);
        for (k = 3 * month; k < 3 * month + 3; k++) {
            glutBitmapCharacter(GLUT_BITMAP_HELVETICA_12, label[k]);
        }
        xRaster += 50;
    }
    glFlush();
}


void winReshapeFcn(GLint newWidth, GLint newHeight)
{
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0.0, GLdouble(newWidth), 0.0, GLdouble(newHeight));


    glClear(GL_COLOR_BUFFER_BIT);
}


void main(int argc, char** argv)
{
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
    glutInitWindowPosition(100, 100);
    glutInitWindowSize(winWidth, winHeight);
    glutCreateWindow("多点画线");


    init();
    glutDisplayFunc(lineGraph);
    glutReshapeFunc(winReshapeFcn);
    glutMainLoop();


} 
相关推荐
唯道行2 天前
计算机图形学·19 Shadings in OpenGL
人工智能·算法·计算机视觉·几何学·计算机图形学·opengl
壕壕10 天前
Re: 0x03. 从零开始的光线追踪实现-多球体着色
macos·计算机图形学
web像素之境16 天前
实时光线追踪加速硬件结构(详细版)
游戏·gpu·计算机图形学
唯道行1 个月前
计算机图形学·9 几何学
人工智能·线性代数·计算机视觉·矩阵·几何学·计算机图形学
唯道行1 个月前
计算机图形学·6 OpenGL编程3 谢尔宾斯基垫与三维编程
人工智能·算法·计算机视觉·计算机图形学·三维·谢尔宾斯基垫
charlie1145141911 个月前
2D 计算机图形学基础速建——2
笔记·学习·线性代数·教程·计算机图形学
charlie1145141911 个月前
2D 计算机图形学基础速建——1
笔记·学习·教程·计算机图形学·基础
ObjectX前端实验室2 个月前
【图形编辑器架构】节点树与渲染树的双向绑定原理
前端·计算机图形学·图形学
ObjectX前端实验室2 个月前
【图形编辑器架构】渲染层篇 — 从 React 到 Canvas 的声明式渲染实现
前端·计算机图形学·图形学
ObjectX前端实验室2 个月前
【图形编辑器架构】节点树篇 — 从零构建你的编辑器数据中枢
前端·计算机图形学·图形学