• OpenGL3:幼儿园篇 第二章 绘制基本的几何描述图形


    一.简介

    二.绘制几何描述

    void glBegin(GLenun mode)  // 定义图元,图元顶点序列开始

    • mode

        GL_POINTS             // 单个点

        GL_LINES             // 一条线

        GLINE_STRIP         // 多条直线

        GLI_LINE_LOOP         // 多条直线首尾相连

        GL_TRIANGLES       // 一个三角形

        GL_TRIANGLE_STRIP     // 多个三角形 

        GL_TRIANGLE_FAN      // 扇形三角形

        GL_QUADS          // 一个四边形

        GL_QUAD_STRIP       // 多个四边形

        GL_POLYGON      // 一个多边形

    void glEnd()  //定义图元,图元顶点序列结束

    在glBegin()和glEnd()之间,不仅可以包含坐标值,还可以有颜色 纹理坐标 法线向量等值

    1.点

    (1) 指定点绘制

    glVertex2s(2, 3);

    glVertex3d(0.0, 0.0, 3.1415926);

    glVertex4f(2.3, 1.0, -2.2, 2.0);

    GLdouble v[3] = {5.0, 9.0, 1992.0};

    glVertex3dv(v);

    void Draw()
    {
        glClear(GL_COLOR_BUFFER_BIT);
        glBegin(GL_POINTS);
        glVertex2f(0.0f, 0.0f);
        glVertex2f(0.5f, 0.5f);
        glEnd();
        glFlush();
    }
    (2) 点属性

    void glPointSize(GLfloat size)    // 设置像素点的宽度,默认为1.0,必须大于0.0

     

    2.线

    (1) 指定线绘制

    glLineWidth()

    glLineStipple()

    void Draw()
    {
        glClear(GL_COLOR_BUFFER_BIT);
        glBegin(GL_LINES);
        glVertex2f(0.0f, 0.0f);
        glVertex2f(0.5f, 0.5f);
        glEnd();
        glFlush();
    }
    (2) 线属性

    void glLineWidth(GLfloat width)

    void glLineStipple(GLint factor, GLushort pattern)

    3.三角形

    四.矩形

    void Draw()
    {
        glClear(GL_COLOR_BUFFER_BIT);
        glRectf(-0.5f, -0.5f, 0.5f, 0.5f);
        glFlush();
    }

    五.圆形

    三.快速绘制

    void glutWireCube(GLdouble size);

    void glutSolidCube(GLdouble size);

    void glutWireSphere(GLdouble radius, GLint slices, GLint stacks);

    void glutSolidSphere(GLdouble radius, GLint slices, GLint stacks);

    四.法线向量

    法线向量是一条垂直于某个表面的方向向量

    OpenGL使用法线向量确定这个物体的各个顶点所接收的光照

    glBegin(GL_POLYGON);
        glNormal3fv(n0);
        glVertex3fv(v0);
    glEnd();

    五.顶点数组

    OpenGL提供了顶点数组来指定大量数据,

    static GLint vertices[] = {25, 25
                               100, 325,
                               175, 25,
                               175, 325,
                               250, 25,
                               325, 325};

    static GLfloat colors[] = {1.0, 0.2, 0.2,
                    0.2, 0.2, 1.0,
                    0.8, 1.0, 0.2,
                    0.75, 0.75, 0.75,
                    0.35, 0.35, 0.35,
                    0.5, 0.5, 0.5};
    glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_VERTEX_ARRAY); glColorPointer(
    3, GL_FLOAT, 0, colors); glVertexPointer(2, GL_INT, 0, vertices);
  • 相关阅读:
    nginx 限流配置
    redis-sentinel 高可用方案实践
    redis之 主从复制和哨兵
    MySQL架构与业务总结图
    MGR实现分析
    通过 SCQA 的框架来讲故事
    MECE分析法
    如何提高问题的认知高度
    Mac 应用程序不能打开解决方法
    vscode打开文件在同一个tab的问题
  • 原文地址:https://www.cnblogs.com/k5bg/p/11175756.html
Copyright © 2020-2023  润新知