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);
原文地址:https://www.cnblogs.com/k5bg/p/11175756.html