PAG动效框架源码笔记 (五)渲染流程

By | 2023年6月8日

转载请注明出处:http://www.olinone.com/

前言

上一章介绍了TGFX渲染框架的大致结构,本章基于OpenGL介绍TGFX绘制Texture纹理详细的渲染流程

绘制Texture纹理,渲染引擎主要包括两个流程:GLSL着色器代码的装载及数据对象的绑定操作

着色器代码(GLSL)

渲染一个纹理,TGFX 需要构建顶点着色器(Vertex Shader)和片段着色器(Frament Shader)两个着色器,其代码分别如下

顶点着色器需要计算每个顶点在渲染坐标系中的坐标,同时将纹理数据输出给片段着色器

为了优化计算性能,TGFX没有在CPU阶段处理矩阵变化和坐标映射,而是交由GPU来处理( GPU更适合矩阵计算);同时,由GPU处理坐标系映射可以更灵活适配不同平台不同坐标系

片段着色器决定了光栅化后每个点像素的最终颜色,TGFX需要处理纹理RGBA计算、Mask蒙版遮罩以及多图层的blend混合计算等

渲染流程

1、任务创建

2、Flush绘制

3、绘制预处理

4、绘制执行

总结

为了支持多平台不同对象(纹理、图形等)绘制,TGFX抽象封装了一套完整的GLSL代码生成模版,各平台继承模版父类负责逻辑实现,后续可以针对iOS平台提供Metal绘制实现

至此, PAG动效框架源码就全部讲解完成

框架中还有大量本文未提到的内容,比如滤镜、文本、图形绘制等等,有兴趣的同学建议阅读源码

相信未来行业内会有大量类似的解决方案,比如基于MP4方案的多图层绘制框架等

2 thoughts on “PAG动效框架源码笔记 (五)渲染流程

  1. 匿名

    您代码有遇见Cannot find module ‘./wasm/tgfx’ or its corresponding type declarations.吗

    Reply

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注