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);
  • 相关阅读:
    Java对象的生命周期与作用域的讨论(转)
    [置顶] Oracle学习路线与方法
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 未名湖边的烦恼
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
    Java实现 蓝桥杯 算法训练 最大的算式
  • 原文地址:https://www.cnblogs.com/k5bg/p/11175756.html
Copyright © 2011-2022 走看看