本系列使用Reason语言,因此需要搭建它的开发环境. 上一篇博文 从0开发3D引擎(二):准备预备知识 搭建开发环境 建议使用VSCode编辑器来开发Reason,因为它的插件支持得最好. 具体搭建Reason开发环境的步骤如下: 1.安装Chrome浏览器 我们使用Chrome浏览器作为测试和运行环境. 2.安装VSCode 3.安装VSCode->OCaml and Reason IDE插件 4.克隆Reason-Example项目: git clone https://github.co…
目录 上一篇博文 了解自动化测试 单元测试 集成测试 端对端测试 通过打印日志来调试 了解运行测试 断点调试 通过Spector.js测试WebGL 通过log调试Shader 移动端测试 了解性能测试 测试时间开销 测试内存开销 搭建本地测试环境 大家好,本文介绍了3D引擎的测试方法,搭建了本地的测试环境. 上一篇博文 从0开发3D引擎(三):搭建开发环境 了解自动化测试 对于引擎开发这种复杂.长期的项目,为了减少bug,提升长期的开发效率,自动化测试必不可少.在我们的Wonder.js引擎中…
大家好,现在开始本系列的第三部分,按照以下几个步骤来搭建引擎雏形: 1.分析引擎的需求 2.实现最小的3D程序 3.从中提炼引擎原型 4.一步一步地对引擎进行改进,使其具备良好的架构 5.实现与架构相关的功能,如"多线程渲染"."延迟渲染"等功能 本文进行第一步,分析引擎的需求. 业务目标 1.手把手教读者如何从0开发3D引擎 2.学习函数式编程及其在3D领域的应用 3.学习3D编程中基础的功能实现,如纹理.光照.模型等 4.学习引擎的设计和架构,如Data Ori…
大家好,本文介绍了Wonder的高层需求和本系列对应的具体功能点. 确定Wonder高层需求 业务目标 Wonder是web端3D开发的解决方案,包括引擎.编辑器,致力于打造开放.分享.互助的生态. 范围 引擎 Wonder.js WebGL 3D引擎 编辑器 Wonder-Editor 工具 提供给用户使用的各种工具,如gltf转wdb数据在线转换器等. 增值服务 增强用户在Wonder中发布的3D应用的能力,如提供数据统计.支付等. 平台 构建3D生态,提供如托管平台.开发资源商城等,用户可…
目录 上一篇博文 继续实现 实现"DirectorJsAPI.init" 实现"保存WebGL上下文"限界上下文 实现"初始化所有Shader"限界上下文 实现用户代码并运行测试 大家好,本文根据领域驱动设计的成果,实现了init API. 上一篇博文 从0开发3D引擎(十):使用领域驱动设计,从最小3D程序中提炼引擎(第二部分) 继续实现 实现"DirectorJsAPI.init" 实现"保存WebGL上下文&q…
介绍 大家好,欢迎你踏上3D编程之旅- 本系列的素材来自我们的产品:Wonder-WebGL 3D引擎和编辑器 的整个开发过程,探讨了在从0开始构建3D引擎和编辑器的过程中,每一个重要的功能点.设计方案的思考.讨论.总结和延伸. 本系列避免陷入细节的实现代码,使用伪代码代替.所以没有可直接运行的代码,取而代之的是经过抽象和提炼的伪代码/模式. 为什么要写这个系列 我有三个小目标: 1.完全创造 完全从0开始,创造一个有深度.有难度.有挑战的产品. 所以Wonder被创造出来了,并且会持续地发展.…
大家好,本文介绍了本系列涉及到的函数式编程的主要知识点,为正式开发做好了准备. 函数式编程的优点 1.粒度小 相比面向对象编程以类为单位,函数式编程以函数为单位,粒度更小. 正所谓: 我只想要一个香蕉,而面向对象却给了我整个森林 2.性能好 大部分人认为函数式编程差,主要基于下面的理由(参考 JavaScript 函数式编程存在性能问题么?): 1)柯西化.函数组合等操作增加时间开销 2)map.reduce等操作,会进行多次遍历,增加时间开销 3)Immutable数据每次操作都会被拷贝为新的…
介绍 大家好,本系列带你踏上Web 3D编程之旅- 本系列是实战类型,从0开始带领读者写出"良好架构.良好扩展性.最小功能集合(MVP)" 的3D引擎. 本系列的素材来自我们的产品:Wonder-WebGL 3D引擎和编辑器 的整个开发过程. 与我的"用函数式编程,从0开发3D引擎和编辑器"系列博文的区别: 本系列是它的重写版 本系列是实战类型,而它是经验总结类型 本系列只写引擎,而它既写引擎又写编辑器 为什么本系列只写引擎? 因为大部分人更关心引擎 为了加快写作速…
目录 上一篇博文 函数式编程的优点与缺点 优点 缺点 为什么使用Reason语言 函数式编程学习资料 引擎中相关的函数式编程知识点 数据 不可变数据 可变数据 函数 纯函数 高阶函数 柯西化 参考资料 大家好,本文介绍我们为什么使用函数式编程来开发引擎,以及它在引擎中的相关的知识点. 上一篇博文 从0开发3D引擎(四):搭建测试环境 函数式编程的优点与缺点 优点 (1)粒度小 面向对象编程以类为单位,而函数式编程以函数为单位,粒度更小. 我只想要一个香蕉,而面向对象却给了我整个森林 (2)擅长处…
目录 上一篇博文 介绍Reason Reason的优势 如何学习Reason? 介绍Reason的部分知识点 大家好,本文介绍Reason语言以及学习Reason的方法. 上一篇博文 从0开发3D引擎(六):函数式反应式编程及其在引擎中的应用 介绍Reason Reason又叫Reasonml,是在Ocaml语言的基础上修改而来,由Facebook ReactJs的开发组开发和维护. Reason是函数式编程语言,由Bucklescript编译器将其编译为javascript语言. Reason…