OpenGL学习笔记之绘制图元

OpenGL学习笔记之绘制图元

#include <gl/glew.h>
#include <gl/glut.h>
#include <iostream>

void DisplayFunc()
{
    glClear(GL_COLOR_BUFFER_BIT);//用指定的颜色清屏

    glPointSize(6.0f);//设置点的大小,单位为像素(默认为1.0f)
    glBegin(GL_POINTS);//开始绘制 GL_POINTS  绘制多个点
    {
        glColor3f(0.6f,0.0f,0.0f);//设置点的颜色
        glVertex2f(-0.8f,0.8f);//设置点的位置

        glColor3f(0.0f,0.0f,0.6f);//设置点的颜色
        glVertex2f(-0.6f,0.8f);

        glColor3f(0.0f,0.6f,0.0f);//设置点的颜色
        glVertex2f(-0.4f,0.8f);
    }
    glEnd();//结束绘制


    glLineWidth(6.0f);//设置线的宽度,单位为像素(默认为1.0f)
    glBegin(GL_LINES);//开始绘制 GL_LINES  绘制多条线
    {
        glColor3f(0.6f,0.0f,0.0f);//设置点的颜色
        glVertex2f(-0.8f,0.7f);//设置点的位置

        glColor3f(0.0f,0.0f,0.6f);//设置点的颜色
        glVertex2f(-0.6f,0.7f);
    }
    glEnd();//结束绘制


    glBegin(GL_LINE_LOOP);//开始绘制 GL_LINE_LOOP  循环画线
    {
        glColor3f(0.6f,0.0f,0.0f);//设置点的颜色
        glVertex2f(-0.8f,0.6f);//设置点的位置

        glColor3f(0.0f,0.0f,0.6f);//设置点的颜色
        glVertex2f(-0.6f,0.6f);

        glColor3f(0.0f,0.6f,0.0f);//设置点的颜色
        glVertex2f(-0.7f,0.5f);
    }
    glEnd();//结束绘制

    glBegin(GL_TRIANGLES);//开始绘制 GL_TRIANGLES  三角形
    {
        glColor3f(0.6f,0.0f,0.0f);//设置点的颜色
        glVertex2f(-0.8f,0.4f);//设置点的位置

        glColor3f(0.0f,0.0f,0.6f);//设置点的颜色
        glVertex2f(-0.6f,0.4f);

        glColor3f(0.0f,0.6f,0.0f);//设置点的颜色
        glVertex2f(-0.7f,0.3f);
    }
    glEnd();//结束绘制

    glShadeModel(GL_FLAT);//设置填充模式 GL_FLAT 平坦模式(以最后绘制的颜色为准)  GL_SMOOTH  平滑模式(默认模式)
    glBegin(GL_TRIANGLES);//开始绘制 GL_TRIANGLES  三角形
    {
        glColor3f(0.6f,0.0f,0.0f);//设置点的颜色
        glVertex2f(-0.5f,0.4f);//设置点的位置

        glColor3f(0.0f,0.0f,0.6f);//设置点的颜色
        glVertex2f(-0.3f,0.4f);

        glColor3f(0.0f,0.6f,0.0f);//设置点的颜色
        glVertex2f(-0.4f,0.3f);
    }
    glEnd();//结束绘制

    //OpenGL采用状态机制,一旦设置后,如果没有重新设置,则沿用之前的设置
    //例如:如果我不将填充模式设置为平滑模式,则四边形会沿用我之前画三角形的平坦模式
    glShadeModel(GL_SMOOTH);//设置填充模式 GL_FLAT 平坦模式(以最后绘制的颜色为准)  GL_SMOOTH  平滑模式(默认模式)
    glBegin(GL_QUADS);//开始绘制 GL_QUADS  四边形
    {
        glColor3f(0.6f,0.0f,0.0f);//设置点的颜色
        glVertex2f(-0.5f,0.1f);//设置点的位置

        glColor3f(0.0f,0.0f,0.6f);//设置点的颜色
        glVertex2f(-0.5f,-0.2f);

        glColor3f(0.0f,0.6f,0.0f);//设置点的颜色
        glVertex2f(-0.2f,-0.2f);

        glColor3f(0.0f,0.6f,0.6f);//设置点的颜色
        glVertex2f(-0.2f,0.1f);
    }
    glEnd();//结束绘制

    glBegin(GL_POLYGON);//开始绘制 GL_POLYGON  多边形
    {
        glColor3f(0.6f,0.0f,0.0f);//设置点的颜色
        glVertex2f(0.2f,0.1f);//设置点的位置

        glColor3f(0.0f,0.0f,0.6f);//设置点的颜色
        glVertex2f(0.5f,0.4f);

        glColor3f(0.0f,0.6f,0.0f);//设置点的颜色
        glVertex2f(0.3f,-0.4f);

        glColor3f(0.0f,0.6f,0.6f);//设置点的颜色
        glVertex2f(0.0f,-0.2f);

        glColor3f(0.6f,0.6f,0.6f);//设置点的颜色
        glVertex2f(-0.1f,-0.1f);
    }
    glEnd();//结束绘制

    glFlush();//提交绘图命令

    glutSwapBuffers();//交换前台缓冲与后台缓冲(GLUT_DOUBLE双缓冲模式需要)
}


//第一个参数是命令的个数,第二个参数是命令内容
int main(int argc,char** argv)
{
    std::cout<<argc<<std::endl;//输出命令个数

    for(int i = 0; i < argc; ++i)//输出命令内容
    {
        std::cout<<argv[i]<<std::endl;
    }

    glutInit(&argc,argv);//初始化glut库(创建窗口需要)

    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);//初始化显示模式 GLUT_RGBA 颜色 GLUT_DOUBLE 双缓冲

    glutInitWindowPosition(100,100);//初始化我们创建的窗口在屏幕左上角的位置

    glutInitWindowSize(600,600);//初始化创建窗口的宽高

    int iWindowID = glutCreateWindow("OpenGL");//创建窗口,并返回窗口的ID,传窗口的标题

    glutDisplayFunc(DisplayFunc);//屏幕显示的回调函数

    glEnable(GL_LINE_STIPPLE);//开启画虚线的模式

    glClearColor(0.0f,0.6f,0.6f,1.0f);//指定屏幕背景色,最后参数为透明度

    glutMainLoop();//消息主循环

    //glutDestroyWindow(iWindowID);//销毁窗口

    return 1;
}

//运行效果
这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值