一.简介
二.绘制几何描述
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);