1. 前言
1.1 本系列文章的内容
本系列文章将会从0开始,实现一个Canvas渲染引擎,并介绍每一步的实现细节。
在这个渲染引擎里,会实现:层级关系,事件系统,图片(Texture)处理等重要功能,最重要的是,这个渲染引擎将支持WebGPU、WebGL、Canvas2D3种渲染模式,并可以在这3种渲染模式之间无缝切换,在保持最高性能的同时保持最大的兼容性。
这个渲染引擎的灵感来源于pixijs,并且,API的命名等会向pixijs看齐,以降低理解成本和使用成本。
1.2 为什么要写本系列文章
作者读过pixijs源码后,想基于其核心思想,自己来实现一个渲染引擎,并且要支持WebGPU、WebGL、Canvas2D3种渲染模式,这是pixijs也没有做到的(pixijs7支持WebGL和Canvas2D,pixijs8支持WebGPU和WebGL),所以,本系列文章就这样诞生了。
这个渲染引擎的内容只有核心的渲染逻辑,所以本文也可以看作对pixijs的核心思想的解构,作者会一步步地实现一个渲染引擎,并详细介绍每一步的实现细节,旨在让大家了解Canvas渲染引擎的核心原理。
希望大家看完后能有所收获,如果有什么问题,也欢迎和我交流。
1.3 一些读者需要注意的点
- 本系列文章提到的pixijs的版本是v7.3.2,commitID是c04c09c50874fef9296555af23e25fe58cc808a9
- 读者在阅读之前请先去了解canvas的一些API,后面会用到。
- 有很多内容都会涉及到线性变换,所以需要读者了解一些基础线性代数知识;学习线性代数,大家可以去b站搜索【官方双语/合集】线性代数的本质 - 系列合集。