OpenGLES 1.1教程(二)-简单图形的绘制
来源:互联网 发布:linux recvfrom 编辑:程序博客网 时间:2024/06/04 18:44
转自: http://www.helmsmansoft.com/index.php/archives/1461
继上一课程,上次的课程简单说了一些关于OpenGLES 1.1的基础内容,包括初始化上下文,缓冲区的创建与绑定,及使用清屏色清屏,每段代码都加了说明,相信大家也都能看的明白了。那么这节就在上节的基础上继续进行课程说明。
这个教程主要是说一下使用OpenGLES 1.1命令绘制简单的2D图形。主要是使用上节课的模版来继续教程,如果您还没有模版,可以到这里下载:模版下载
下面就开始本节的教程:
下载模版以后,打开工程,打开RenderView.m文件,可以在里面找到- (void)render方法(渲染方法),修改这个方法代码如下:
这里来逐行讲解下代码的具体作用:
static CGFloat spinnySquareVertices[8] 定义了一个类型为CGFloat的数组,说到这先来看下在IPone中OpenGL的默认坐标,如下图:
上面的图代表iphone的整个界面,OpenGL在其中的坐标如上图,那么从上图就可以看出,我们定义的数组( CGFloat spinnySquareVertices[8])的数据就是充满整个屏幕的。
glColor4f(1.0, 1.0, 0.0, 1.0) 绘制使用的颜色,参数为浮点数(0.0,1.0).
glVertexPointer(2, GL_FLOAT, 0, spinnySquareVertices) 确定使用的顶点坐标数列的位置和尺寸,其中4个参数,
第一个参数表示绘制一个定点的坐标个数,我们这里绘制的是一个充满屏幕的矩形,每个点由X和Y构成,所以是2
第二个参数表示使用的数据的类型,一般都为GL_FLOAT类型
第三个参数表示各个顶点之间跨越的字节数,这里使用的连续绘制,所以无跳跃,为0
第四个参数表示要读取的数组数据中第一个坐标元素
glEnableClientState(GL_VERTEX_ARRAY); 启动独立的客户端功能,告诉OpenGL将会使用一个由glVertexPointer定义的定点数组,此命令告诉OpenGL使用上面传入的数据真正的去绘制
PS:默认状态下,所有的客户端功能均被禁止,所以必要时需要将他们开启或关闭,启动一个客户端功能使用命令glEnableClientState
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4) 使用此命令来驱动OpenGL进行渲染,
第一个参数表示OpenGL用给定顶点应该呈现的基本类型,使用GL_TRIANGLE_STRIP命令可以让我们禁用四个顶点就可以定义两个三角形。
PS:OpenGL支持四边形,但OpenGLES并不支持四边形,仅支持三角形。
第二个参数表示传入的顶点数组中的起始指标
第三个参数表示从数组中读取的顶点数,我们绘制的是一个充满屏幕的四边形,有4个顶点
上面讲解的就是在原来基础模版上加的代码的功能,我们运行程序可以看到屏幕的状态如下图:
从这里可能不能看出具体绘制的形状,因为充满了屏幕,在上面了解了OpenGL坐标之后,可以对顶点数组进行一点修改,如下:
运行程序如下图:
我们通过以上的数据可命令代码绘制出了一个举行,那么怎么绘制出一个三角形呢?相信大家看了上面的说明应该很容易想出办法,其实很简单,只需要简单的修改两个参数就可以办到,如下:
运行程序,效果如下:
上面的实现,所有的2D图形都是纯色的效果,那好,下面就来实现彩色的二维图形,很简单,在render方法里,添加如下代码
一个颜色数组
和对颜色数组的调用使用,继续在render 里添加如下代码:
这里对glColorPointer方法做下说明:
第一个参数,同上,一个顶点使用的坐标个数,这里是用4个值来表示一个颜色点
其他的就跟上面的方法一样了
效果图如下:
把 glVertexPointer(2, GL_FLOAT, 0, spinnySquareVertices);方法的第二个参数改为GL_FLOAT效果图如下:
下面是顶点属性数据类型
顶点属性数据类型
OpenGL Type
OpenGL Enumerant
Typedef Of
Length in Bits
GLbyteGL_BYTEsigned char8GLubyteGL_UNSIGNED_BYTEunsigned char8GLshortGL_SHORTshort16GLushortGL_UNSIGNED_SHORTunsigned short16GLfixedGL_FIXEDint32GLfloatGL_FLOATfloat32- OpenGLES 1.1教程(二)-简单图形的绘制
- OpenGLES 1.1教程(二)-简单图形的绘制
- OpenGLES 1.1教程(二)-简单图形的绘制
- iOS --- OpenGLES之简单的图形绘制
- libGDX开发教程(二)--图形绘制
- libGDX开发教程(二)--图形绘制
- android OpenGLES开发第一课 绘制简单的Polygon
- GDI绘制简单的图形
- Android中使用Canvas绘制简单的图形(二) 进阶 绘制钟表
- Android0917<二十一>(自定义的View、绘制简单图形、Bitmap)(二)
- OpenGLES 1.1教程(一)
- OpenGLES 1.1教程(一)
- 零基础HTML5游戏制作教程 第2章 简单图形的绘制
- Android学习01简单的图形绘制
- FxCAD实验一 简单图形的绘制
- ODE 3D图形的简单绘制
- Quartz2D 绘制简单图形的案例
- 用代码绘制简单的图形
- Google Python 风格指南
- 去掉Query无用的过滤InfoObject
- 使用匿名函数为setInterval传递参数
- Nios IDE:去掉更改项目路径文件夹显示黄色感叹号
- 基于已有cramfs文件系统制作cramfs文件系统
- OpenGLES 1.1教程(二)-简单图形的绘制
- iphone中GPS精确定位及反向获取地址信息
- OpenGl纹理映射
- qt 背景随窗口变化
- jvm hotspot 源码分析 RandomAccessfile vs FileChannel 写文件
- DM365软件环境搭建步骤
- centos 下centos源码下载安装
- 数据库出现 enq: TX - row lock contention
- Linux mannual page to txt