OpenGL 知多少——抖音特效实战

OpenGL

OpenGL到底是什么。一般它被认为是一个API(Application Programming Interface, 应用程序编程接口),包含了一系列可以操作图形、图像的函数。然而,OpenGL本身并不是一个API,它仅仅是一个由Khronos组织制定并维护的规范(Specification)。

OpenGL怎么工作

OpenGL被当作客户端-服务器系统来实现的,应用程序是客户端,图形硬件厂商提供的OpenGL实现是服务器。客户端程序需要调用OpenGL的接口实现3D渲染,那么OpenGL命令和数据会缓存在内存中,在一定条件下,会将这些命令和数据通过CPU时钟发送到显存,在GPU的控制下,使用显存中的数据和命令,经过渲染管道完成图形的渲染,并将结果存入帧缓冲区中,帧缓冲区中的帧最终会被发送到显示器上,显示出结果。

渲染管道示意图

image

1、顶点处理:把一个单独的顶点输入顶点着色器,顶点着色器主要的目的是把3D坐标转为另一种3D坐标,OpenGL仅当3D坐标在3个轴(x、y和z)上都为-1.0到1.0的范围内时才处理它。所有在所谓的标准化设备坐标(Normalized Device Coordinates)范围内的坐标才会最终呈现在屏幕上(在这个范围以外的坐标都不会显示)。
2、图元装配:以顶点着色器的输出的顶点作为输入,装配成对应的图元(OpenGL ES 只支持三种图元,分别是顶点、线段、三角形,复杂的图形得通过渲染多个三角形来实现)。
3、处理图元:把上一步输出的图元输入到几何着色器,几何着色器把图元形式的一系列顶点的集合作为输入,它可以通过产生新顶点构造出新的(或是其它的)图元来生成其他形状。
4、光栅化:把图元映射为最终屏幕上相应的像素,会裁剪超出视图外的像素(为了提高效率),最终生成片段。
5、处理片段:将片段输入到片段着色器,片段着色器的主要目的是计算一个像素的最终颜色(滤镜处理的地方)。
6、测试及混合:这个阶段检测片段的对应的深度值和模板值,用它们来判断这个像素是其它物体的前面还是后面,决定是否应该丢弃。这个阶段也会检查alpha值(alpha值定义了一个物体的透明度)并对物体进行混合(Blend)。

抖音滤镜实践

为了将上面的内容更好的串联起来,今天我们来实践一个经典的抖音滤镜——抖动。
以上都是试读,更多精彩内容查看:https://xiaozhuanlan.com/topic/8203157694

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 趁着春还未暖花还未开,赶紧运动瘦身吧。 不要留恋那些好看的衣服,急于下单。 比买不起更让人崩溃的是穿不上,穿不上,...
    春秋海儿阅读 121评论 0 0
  • 文/青山野渡 【二五眼】北京老话儿 二五眼,形容词,是京剧词汇之一。京剧中的“板眼”有两板三眼、两板四眼、两板六眼...
    青山野渡阅读 1,468评论 1 3
  • 睡得正糊涂,一阵“倒车,请注意、倒车,请注意……”朦胧中脆生生逼耳而来,微凉的夜色还没有散开,黑暗中摸手机,借着微...
    文子也阅读 840评论 0 1
  • 我很少会对一部电影写太多的影评,因为有很多写的很好的影评,把我想说的话都说了,甚至思考的比我更深刻。 但这部电影,...
    安静像尘埃阅读 870评论 8 5