webGL的框架与引擎

参考:https://zhuanlan.zhihu.com/p/162878354
吴多益原著:如何选择 WebGL 框架和引擎?
强烈建议详细查看吴大神的原作,本文只是摘抄笔记了部分感兴趣或者常用的库。

在这里插入图片描述

webGL框架和引擎按照定位可以分成这三种类型:

webGL封装:定位是简化WebGL开发。最大的特点是必须自己写GLSL;
渲染引擎:定位是三维物体及场景展示,一般会抽象出场景,相机,灯光等概念。不需要自己写GLSL;
游戏引擎:定位是游戏开发,在前面的渲染引擎的基础上,还提供了骨骼动画,物理引擎,AI,GUI等功能,以及可视化编辑来设计关卡,支撑大型游戏的开发。

webGL封装

twgl.js

https://github.com/greggman/twgl.js

This library’s sole purpose is to make using the WebGL API less verbose.
这个库的唯一目的是让使用 WebGL API 变得不那么冗长
所以其主要就是简化了WebGL的代码,对其进行了封装和优化,减少了代码量

在github种creating buffers for a cube 的例子种:

仅需7行代码就可以在twgl.js实现webGL需要近20行实现的内容:
在GitHub的原文中也提到:

A simple lit cube in WebGL might easily take over 60 calls into WebGL.

const arrays = {
  position: [1,1,-1,1,1,1,1,-1,1,1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,1,-1,1,1,1,1,1,1,1,-1,-1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,1,1,-1,1,-1,1,-1,1,1,-1,1,-1,-1,-1,-1,-1],
  normal:   [1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1,0,0,0,1,0,0,1,0,0,1,0,0,1,0,0,-1,0,0,-1,0,0,-1,0,0,-1],
  texcoord: [1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,1,1,1],
  indices:  [0,1,2,0,2,3,4,5,6,4,6,7,8,9,10,8,10,11,12,13,14,12,14,15,16,17,18,16,18,19,20,21,22,20,22,23],
};
const bufferInfo = twgl.createBufferInfoFromArrays(gl, arrays);

twgl 的定位只是减少重复代码,并没有进一步抽象,所以使用它和直接用 WebGL
在学习成本上没太大区别,因此非常适合初学者,但也意味着它没什么独特的功能。

regl.js

在这里插入图片描述

Fast functional WebGL

顾名思义,regl对webGL进行了函数式的封装。

和 twgl 单纯简化代码相比,regl 提供了跟高层的抽象,将原本的过程式转成了函数式,使得看起来更符合直觉

OGL

在这里插入图片描述

Minimal WebGL library
最小的webGL库

ogl定位比较特别,介于webGL封装和渲染引擎之间。

https://github.com/oframe/ogl

https://webglfundamentals.org/webgl/lessons/zh_cn/ webGL教程WebGL Fundamentals

渲染引擎

渲染引擎比webGL教程更加容易上手一些

Filament

https://github.com/google/filament
https://google.github.io/filament/Filament.html#about/authors

整体上我觉得它是学习 PBR 渲染实现原理的优秀项目,虽然暂时不适合在 Web 上用,但值得继续关注。

Claygl ✳

在这里插入图片描述

http://claygl.xyz/

Claygl 是 ECharts 核心开发者 pissang 大神的开发的 WebGL 引擎

osgjs

https://github.com/cedricpinson/osgjs

OSGJS 是一个基于 OpenSceneGraph 概念的 WebGL 框架。它允许个人使用“类似 OpenSceneGraph”的工具箱通过 JavaScript 与 WebGL 交互,并提供将各种资产导出为 osgjs 格式的工具。API 尽可能与 OpenSceneGraph 相似,为库的老手提供熟悉的环境,并向新人介绍流行且经过严格审查的接口集

游戏引擎

游戏引擎在渲染器的基础上增加了面向游戏开发的各种功能,包括 AI、物理、编辑器等,工作量巨大,比起图形学算法,更重要还有工程能力。

Unreal Engine
Unity
Godot
Three.js
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yoo前端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值