OpenGL ES 绘制矩形
2018-09-14 本文已影响3人
osbornZ
系统梳理,重新出发。
坐标系
众所周知,iOS屏幕坐标系是左手坐标系:左上角为(0,0),向右向下为xy正方向;
而openGL的坐标系则是右手坐标系,并且区间是 [-1,1];
所以绘制的坐标可以自行定义,由于openGL是3D坐标的,我们开始的平面 z = 0.f;
绘制方式
glDrawArrays 与 glDrawElements 区别:
glDrawArrays传输或指定的数据是最终的真实数据,在绘制时效能更好;
而glDrawElements指定的是真实数据的调用索引,在内存/显存占用上更节省;
(即 VBO+IBO 方式)
从渲染管道流程来看, 顶点着色器 处理完顶点坐标/法线 之后, 会进行到下一阶段 图元装配(Primitive Assembly)
经过着色器处理之后的顶点在图片装配阶段被装配为基本图元。OpenGL ES支持三种基本图元:点,线和三角形,它们是可被 OpenGL ES 渲染的。接着对装配好的图元进行裁剪(clip):保留完全在视锥体中的图元,丢弃完全不在视锥体中的图元,对一半在一半不在的图元进行裁剪;接着再对在视锥体中的图元进行剔除处理(cull):这个过程可编码来决定是剔除正面,背面还是全部剔除。
绘制图元. < 点 线 三角形 >
GL_POINTS
GL_LINES
GL_TRIANGLES
GL_TRIANGLE_FAN
......
下一阶段是: 光栅化 光栅化是顶点着色器到片元着色器的过渡即脚本中的 输出和输入.
之后就是 到了 片元着色器 进行像素颜色处理...
shader
脚本开发使用GLSL 语言:
- 顶点着色器 gl_Position
- 片元着色器 gl_FragColor
书写方式和C差不多,有很多内置函数和变量,我们可以参考
GLSL指南