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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)