OpenGL/OpenGL ES (七) —— 初探

2019-06-17  本文已影响0人  HookLee

OpenGL/OpenGL ES (一) —— 专业名词快速了解
OpenGL/OpenGL ES (二) —— 渲染架构、图元、着色器、投影
OpenGL/OpenGL ES (三) —— 绘制甜甜圈
OpenGL/OpenGL ES (四) —— 纹理
OpenGL/OpenGL ES (五) —— 纹理翻转策略
OpenGL/OpenGL ES (六) —— 立方体旋转
OpenGL/OpenGL ES (七) —— 初探
OpenGL/OpenGL ES (八) —— 如何加载一张图片
OpenGL/OpenGL ES (九) —— 光照

前言

OpenGL ES (OpenGL for Embedded Systems) 是以手持和嵌入式为目标的⾼级3D图形应 ⽤用程序编程接⼝口(API). OpenGL ES 是目前智能⼿机中占据统治地位的图形API.⽀支持的平 台: iOS, Andriod , BlackBerry ,bada ,Linux ,Windows。
OpenGL ES 开放式图形库(OpenGL的)⽤于可视化的二维和三维数据。它是一个多功能开放标准图形库,支持2D和3D数字内容创建,机械和建筑设计,虚拟原型设计,飞行模拟,视频游戏等应⽤用程序。您可以使⽤用OpenGL配置3D图形管道并向其提交数据。顶点被变换和点亮,组合成图元,并光栅化以创建2D图像。OpenGL旨在将函数调⽤用转换为可以发送到底层图形硬件的图形命 令。由于此底层硬件专⽤用于处理理图形命令,因此OpenGL绘图通常⾮非常快。
OpenGL for Embedded Systems(OpenGL ES)是OpenGL的简化版本,它消除了了冗余功能,提供了了一个既易于学习又更易于
在移动图形硬件中实现的库。苹果官方文档

OpenGL ES运算优势

OpenGL ES允许应⽤用程序利用底层图形处理器的强大功能。iOS设备上的GPU可以执⾏行行复杂的2D和3D绘图,以及最终图像中每个像素的复杂着⾊计算。值得注意的是OpenGL ES Client 的代码是在CPU上运算的。而OpenGL ES Server 是利用GPU并行运算的优势进行图形硬件绘制。


运算区域

OpenGL ES 3.0

1. 顶点着色器

顶点着色器业务:

它可以用于执行自定义计算,实施新的变换,照明或者传统的固定新功能所不允许的基于顶点的效果。顶点着色器最终赋值给内建变量
gl_Position。

顶点着⾊代码案例:
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;
}

2. 图元装配

3. 光栅化

在这个阶段绘制对应的图元(点/线/三⻆角形). 光栅化就是将图元转化成一组二维片段的过程.而这些转化的⽚段将由片元着色器处理.这些⼆二维片段就是屏幕上可绘制的像素.


3.png

4. 片段着色器/片元着⾊器

业务

计算颜色
获取纹理值
往像素点中填充颜色值(纹理或者颜色)

功能

它可以用于图片、视频、图形中的每个像素的颜色值填充(比如给视频添加滤镜,实际上就是将视频中每个图片的像素点颜色填充进行修改)

着色器程序

描述片段上执行操作的顶点着色器程序源代码/可执行文件

输入变量

光栅化单元用插值为每个片段生成的顶点着色器蔬菜

统一变量(uniform)

顶点和片元着色器使用的不变的数据

采样器

代表片元着色器使用纹理的特殊统一变量类型

片元着色代码案例:
 varying lowp vec2 varyTextCoord; uniform sampler2D colorMap; void main()
{
gl_FragColor = texture2D(colorMap, varyTextCoord); 
}
逐⽚段操作
image.png
像素归属测试:
裁剪测试:
深度测试:
混合:
抖动:
上一篇下一篇

猜你喜欢

热点阅读