千锋3G学院-iOS开发视频教程-愤怒的小鸟-第11讲-OpenGL画线.pdf
- 文件大小: 9.58MB
- 文件类型: pdf
- 上传日期: 2025-08-17
- 下载次数: 0
概要信息:
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
欧阳坚
视频、源代码、交流网址
www.1000phone.net
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
弹工的2条线段
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
2. OpenGL ES框架
1. OpenGL ES介绍
4. 整合代码
3. OpenGL ES如何画线
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
OpenGL是由SGI公司开发的⼀一套3D图形软件接⼝口标准,
由于具有体系结构简单合理、使⽤用⽅方便、与操作平台⽆无关等
优点,OpenGL迅速成为⼀一种3D图形接⼝口的⼯工业标准,并
陆续在各种平台上得以实现。作为⼀一个性能优越的图形应⽤用
程序设计界⾯面(API)⽽而适合于⼲⼴广泛的计算环境,从个⼈人计
算机到⼯工作站和超级计算机,OpenGL都能实现⾼高性能的三
维图形功能。由于许多在计算机界具有领导地位的计算机公
司纷纷采⽤用OpenGL作为三维图形应⽤用程序设计界⾯面,
OpenGL应⽤用程序具有⼲⼴广泛的移植性。
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} OpenGL ES (OpenGL for Embedded Systems)
是 OpenGL 三维图形 API 的⼦子集,针对⼿手机、
PDA和游戏主机等嵌⼊入式设备⽽而设计。
} OpenGL ES 是从 OpenGL 裁剪定制⽽而来的,去除
了 glBegin/glEnd,四边形(GL_QUADS)、多边
形(GL_POLYGONS)等复杂图元等许多⾮非绝对必
要的特性。经过多年发展,现在主要 有两个版本,
OpenGL ES 1.x 针对固定管线硬件的,OpenGL
ES 2.x 针对可编程管线硬件。
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
OpenGL ES
显卡GPU
Cocos2D Unity3D
iOS
操作系统
各类游戏
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
GL_API void glLineWidth (GLfloat width);
} glLineWidth 指定线段的宽度。
} 实际的宽度取决于所提供宽度的四舍五⼊入整数值。
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
GL_API void glColor4f (
GLfloat red,
GLfloat green,
GLfloat blue,
GLfloat alpha);
设置颜⾊色
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} 注意:在使⽤用顶点数组时,必须先调⽤用
glEnableClientState开启顶点数组功能,在不⽤用的
时候调⽤用glDisableClientState来禁⽤用
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
GL_API void glVertexPointer (
GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
size:
每个顶点有⼏几个数指描述。必须是2,3 ,4 之⼀一,初始值是4.
type:
数组中每个顶点的坐标类型。取值:
GL_BYTE, GL_SHORT , GL_FIXED , GL_FLOAT, 初始值 GL_FLOAT
stride:
组中每个顶点间的间隔,步⻓长(字节位移)。取值若为0,表⽰示数组是连续
的 初始值为0
pointer
数组存储着每个顶点的坐标值。初始值为0
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
GL_API void glDrawArrays (
GLenum mode, GLint first, GLsizei count);
mode
指定你要绘制何种图元, 如:
GL_POINTS, GL_LINE_STRIP,
GL_LINE_LOOP, GL_LINES,
GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN,
GL_TRIANGLES.
first
在指定的数组中的开始位置(索引位置)
count
点的绘制次数,
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} 在OpenGL中绘制直线是通过指定直线段的端点来实现的,其中使⽤用
glVertex函数指定直线段端点的坐标位置,⽤用glBegin/glEnd函数对
包含⼀一系列的点坐标,并利⽤用符号常量解释这些点构成直线的⽅方式。
OpenGL的画线模式有三种:
} GL_LINES,GL_LINE_STRIP和GL_LINE_LOOP模式。 GL_LINES模式
指定glBegin/glEnd函数对中,从第⼀一个点开始,两两构成⼀一条直线
段。如果函数对中有奇数个点,则最后⼀一个点不处理。
GL_LINE_STRIP或GL_LINE_LOOP模式可以在⼀一系列的点(此时可称
为顶点)之间绘制连续直线段。GL_LINE_STRIP模式下第⼀一个顶点之
后的每个顶点都与其前⾯面的⼀一个顶点构成⼀一条直线段,即第⼀一和第⼆二
个顶点、第⼆二和第三个顶点、第三和第四个顶点构成直线段,并⼀一直
延续下去。特别地,当沿着某条曲线指定⼀一系列靠得很近的点时,使
⽤用GL_LINE_STRIP模式可以绘制⼀一条曲线。GL_LINE_LOOP模式与
GL_LINE_STRIP模式类似,只是会在指定的最后⼀一个顶点与第⼀一个顶
点之间画最后⼀一条线。
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} GL_POINTS
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUADS
GL_QUAD_STRIP
GL_POLYGON
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
GL_POINTS
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUADS
GL_QUAD_STRIP
GL_POLYGON
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} GL_POINTS
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUADS
GL_QUAD_STRIP
GL_POLYGON
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} GL_POINTS
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUADS
GL_QUAD_STRIP
GL_POLYGON
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} GL_POINTS
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUADS
GL_QUAD_STRIP
GL_POLYGON
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} GL_POINTS
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUADS
GL_QUAD_STRIP
GL_POLYGON
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} GL_POINTS
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUADS
GL_QUAD_STRIP
GL_POLYGON
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} GL_POINTS
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUADS
GL_QUAD_STRIP
GL_POLYGON
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} GL_POINTS
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUADS
GL_QUAD_STRIP
GL_POLYGON
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} GL_POINTS
GL_LINES
GL_LINE_STRIP
GL_LINE_LOOP
GL_TRIANGLES
GL_TRIANGLE_STRIP
GL_TRIANGLE_FAN
GL_QUADS
GL_QUAD_STRIP
GL_POLYGON
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
- (void) draw {
glLineWidth(2.0f);
glColor4f(0.01f, 1, 0, 1);
glDisable(GL_TEXTURE_2D);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
GLfloat vertices[4] = { 82, 200, x, y, };
glVertexPointer(2, GL_FLOAT, 0, vertices);
glDrawArrays(GL_LINES, 0, 4);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
}
源⾃自清华 值得信赖
中国移动互联⺴⽹网研发培训专家
} 千锋互联: www.1000phone.com
} 千锋3G学院: www.mobiletrain.org
} 千锋嵌入式学院: www.embedtrain.org
当前页面二维码