一.OpenGlES 版本
1) OpenGL ES 1.X :针对固定功能流⽔管线硬件
2)OpenGL ES 2.X :针对可编程流⽔管线硬件
3)OpenGL ES 3.X :OpenGL ES 2.0的扩展
二.EGL (Embedded Graphics Library )
特点:1)OpenGL ES 命令需要渲染上下⽂和绘制表⾯才能完成图形图像的绘制
2)渲染上下⽂: 存储相关OpenGL ES 状态.
3)绘制表⾯: 是⽤于绘制图元的表⾯,它指定渲染所需要的缓存区类型,例如颜⾊缓存
区,深度缓冲区和模板缓存区
4)OpenGL ES API 并没有提供如何创建渲染上下⽂或者上下⽂如何连接到原⽣窗⼝系统. EGL 是Khronos 渲染API(如OpenGL ES) 和原⽣窗⼝系统之间的接⼝. 唯⼀⽀持OpenGL ES 却不⽀持EGL 的平台是iOS
EGL的主要功能:
1)和本地窗⼝系统(native windowing system)通讯
2)查询可⽤的配置
3)创建OpenGL ES可⽤的“绘图表⾯”(drawing surface)
4)同步不同类别的API之间的渲染,⽐如在OpenGL ES和OpenVG之间同步,或者在OpenGL和本地窗⼝的绘图命令之间
5)管理“渲染资源”,⽐如纹理映射(rendering map)
三.向量数据类型。
四.矩阵数据
五.变量存储限定符
六.OpenGL ES 错误处理
如果不正确使⽤OpenGL ES 命令,应⽤程序就会产⽣⼀个错误编码. 这个错误编码将被记录,可以⽤glGetError查询. 在
应⽤程序⽤glGetError查询第⼀个错误代码之前,不会记录其他错误代码. ⼀旦查询到错误代码,当前错误代码便复位为
GL_NO_ERROR
七.简单实现一个顶点着色器片元着色器及参数说明
OpenGL的渲染架构:
一个简单的顶点着色器:
attribute vec4 position;---->顶点坐标
attribute vec2 textCoordinate;---->纹理坐标
varying lowp vec2 varyTextCoord;---->纹理坐标,用于传给片元着色器,注意一定要和片元着色器一摸一样,你可以把它理解成全局变量,先顶点着色器赋值,片元着色器直接用lowp/highp表示精度
voidmain()
{
varyTextCoord = textCoordinate;
gl_Position= position;--->gl_Position内建变量,用于存储顶点着色器计算后的顶点坐标
}
一个简单的片元着色器:
precision highp float;
varying lowp vec2 varyTextCoord;---->纹理坐标,注意和顶点着色器的一摸一样
uniform sampler2D colorMap;----->采样器,存储纹理
voidmain()
{
//lowp vec4 temp = texture2D(colorMap, varyTextCoord);
//gl_FragColor = temp;
gl_FragColor=texture2D(colorMap, varyTextCoord);
}