渲染引擎模板
撰写时间:2026-09-03
修订时间:2026-09-03
概述
要设计一个通用的WebGL V2.0渲染引擎,因涉及到多方面的内容,可能需要多次调整、修改、完善。
而在逐个实现各个类时,有时因看不到将来的具体需求,导致类的设计不合格。例如,先设计了A类并可运行。但当后面设计了B类,才发现A类无法满足B类的需求,此时只得重新设计或完善A类。因此,各个类的设计与完善永远都是一个现在进行时。这就是牵一发而动全身,或说根基不牢,地动山摇。
另一问题是,当特定类设计好后,它往往封装了大量的底层细节,我们离最基本的APIs越来越远。而为找到问题的根源,我们有时被迫返回至最底层代码。
因此,本章从最底层开始,提供了各阶段的各类模板,既可方便地看到最原始的底层代码,又可直接在上面修改、完善为更高版本的代码。
初始模板
这个模板只依赖于FullScreenCanvas.css文件以及glMatrix第三方库,其余均使用最底层的APIs来编写。涵盖WebGL 2.0的VAO,MVP矩阵的应用,以及gl.drawElements的调用。可正确响应resize事件。小心谨慎地确保了应用程序的状态初始化的正确顺序,以及尽量使各个函数都模块化、原子化。
运行应用。
带有动画的模板
除了动画之外,还可使用键盘快捷键A, S, D, W来进行第一人称视角的移动,也可用鼠标滚轮在Z平面内移动视图矩阵。
运行应用。
