OPENGL ES 3.0 学习总结

Opengl ES是opengl的一个分支,opengl es集中了opengl中高效的绘图功能部分,省去了低效繁杂的绘图功能部分,主要应用于手持和嵌入式设备的3D绘图,突出的优点就是处理快,消耗小。

Opengl就是一个状态机,只对当前绑定的纹理进行操作,如果需要对其他纹理进行操作,需要先解绑再绑定别的纹理。

  1. 创建绘图窗口

ESContest有一个类型为void*名为userData的参数,该参数就是专门提供给开发者使用,开发者将自己定义的参数全部放在userData中。

esCreateWindow ( esContext, "窗口名称", weigth, height, ES_WINDOW_RGB/*显示图像的格式*/ );

  1. 着色器

着色器对象和程序对象是使用opengl es的基础。

    1. 着色器对象

使用glCreatShader创建一个着色器,接着使用glShaderSource读取着色器,使用glCompileShader编译着色器,再使用glGetShaderiv检查着色器编译是否正确,以上这些步骤其实都已经集成在opengl内部库中,只需要调用esLoadShader便可以完成,但是我们实际操作过程中也不用esLoadShader,而是直接使用程序对象。

    1. 程序对象

通过esLoadProgram直接读取顶点着色器和片段着色器到programobject,后续直接对programobject进行相关操作即可;

  1. 顶点着色器

3.1 #version 300 es

是使用openglES 3.0的标志,第一行必须写这个,系统读取顶点着色器时,会先根据第一行判断是那个版本,然后再读取下面的数据。

3.2 精度限定符:(顶点和片段着色器都有)

精度关键字有lowp、mediump、highp分别对应低、中、高精度;

其中为float指定精度则只作用于float类型的参数,int同理,这里只列出了float类型的精度:

precision mediump float;

precision highp float;

在顶点着色器中可以不写精度限定符,系统默认为highp(因为顶点着色器中通常都是顶点、位置、法线、纹理坐标等变换操作,必须要highp类型,而颜色计算、照明方式可以选用mediump)。

3.3 统一变量声明

uniform mat4 u_mvpMatrix;

uniform统一变量声明的标识符,这里声明一个4*4的MVP矩阵,即模型-视图-投影矩阵。

3.4 layout(location = 0) in vec4 a_position;

   Layout限定符,后面跟着的location对应的就是顶点属性的索引,顶点属性的索引的用法后面介绍;in:代表输入的意思;这里还隐藏了默认的插值限定符,默认的是smooth(平滑着色),即smooth in vec4 a_position,同时插值限定符还有flat(平面着色),centroid(质心采样),使用多重采样时,质心采样可以强制插值发生在被渲染图元的内部(否则图元边缘可能出现伪像)smooth centroid in vec3 v_color;

3.5 out vec4 v_color;

   这里out意思就是输出,但是这里的输出参数v_color是传递给片段着色器的,也就是说顶点着色器的输出都是片段着色器的输入;

3.6 main函数

   这里的main函数便是整个代码的入口,opengl会首先找到main函数,并从这里开始执行代码,而顶点着色器的输入变量需要在后续代码中输入;这里的gl_Position是内建特殊变量,用于输出顶点位置的裁剪坐标。注意代码最后的分号,顶点着色器和片段着色器都有这个分号!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值