八、OpenGL ES 初识

2020-07-27  本文已影响0人  夏天的枫_

Apple OpenGL ES documentation
Apple 的解释:这个开放图形库(OpenGL)用于可视化2D和3D数据的。 它是一个多用途的开放标准图形库,支持2D和3D数字内容创建,机械和建筑设计,虚拟样机,飞行模拟,视频游戏等应用程序。 您可以使用OpenGL配置3D图形管线并将数据提交给它。 对顶点进行变换和光照,将其组装为图元,并进行栅格化以创建2D图像。 OpenGL旨在将函数调用转换为可发送到基础图形硬件的图形命令。 由于此底层硬件专用于处理图形命令,因此OpenGL绘制通常非常快。
OpenGL for Embedded Systems(OpenGL ES)是OpenGL的简化版本,它消除了冗余功能,从而提供了一个更易于学习且更易于在移动图形硬件中实现的库。

OpenGL ES 架构
OpenGL ES 图形管道
顶点着色器

顶点着色器场景

总结:它可以用于执行自定义计算,实现新的变换、照明,或者 传统的固定功能所不能实现的基于顶点的效果

attribute vec4 position; //  顶点数据
attribute vec2 textCoordinate;  // 纹理坐标
uniform mat4 rotateMatrix; // 旋转矩阵
varying lowp vec2 varyTextCoord;  
void main()
{

     varyTextCoord = textCoordinate; 
     vec4 vPos = position; 
     vPos = vPos * rotateMatrix;  // 叉乘得到顶点位置坐标
     gl_Position = vPos;
} 

补充:内置变量就是不用声明可以直接赋值,主要是为了实现特定的功能。


内建变量含义
图元装配
光栅化

该阶段将对应的图元(点、线、三角形)进行光栅化,把图元转化成一组二维片段。这些二维片段就是在屏幕上可以绘制的像素,它们将由片元着色器处理。

片元着色器(片段着色器)

片元着色器场景

总结:它可用于图元、视频、图形中每个像素的颜色填充。比如给视频添加滤镜,实际上就是给视频中每个图元的像素点颜色填充进行修改

varying lowp vec2 varyTextCoord;
uniform sampler2D colorMap;
void main(){
    //经过片元着色器对某一个像素点进行处理之后的结果
    gl_FragColor = texture2D(colorMap,varyTextCoord); 
}
逐片段操作
逐片段操作流程
上一篇 下一篇

猜你喜欢

热点阅读