zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    boot文件上传的坑
    页面前端获取时间和数据库获取时间差八个小时 CST
    springcloud 学习
    springcloud 的eureka服务
    ROWNUM()应用案例-实现一个拉链表
    python dict 常用操作
    【转】团队项目的Git分支管理规范
    Python中使用cx_Oracle调用Oracle存储过程
    【转载】ORACLE 物化视图
    C# 加密解密
  • 原文地址:https://www.cnblogs.com/k5bg/p/11175756.html
Copyright © 2011-2022 走看看