目录 上一篇博文 了解自动化测试 单元测试 集成测试 端对端测试 通过打印日志来调试 了解运行测试 断点调试 通过Spector.js测试WebGL 通过log调试Shader 移动端测试 了解性能测试 测试时间开销 测试内存开销 搭建本地测试环境 大家好,本文介绍了3D引擎的测试方法,搭建了本地的测试环境. 上一篇博文 从0开发3D引擎(三):搭建开发环境 了解自动化测试 对于引擎开发这种复杂.长期的项目,为了减少bug,提升长期的开发效率,自动化测试必不可少.在我们的Wonder.js引擎中…
本系列使用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…
大家好,现在开始本系列的第三部分,按照以下几个步骤来搭建引擎雏形: 1.分析引擎的需求 2.实现最小的3D程序 3.从中提炼引擎原型 4.一步一步地对引擎进行改进,使其具备良好的架构 5.实现与架构相关的功能,如"多线程渲染"."延迟渲染"等功能 本文进行第一步,分析引擎的需求. 业务目标 1.手把手教读者如何从0开发3D引擎 2.学习函数式编程及其在3D领域的应用 3.学习3D编程中基础的功能实现,如纹理.光照.模型等 4.学习引擎的设计和架构,如Data Ori…
介绍 大家好,本系列带你踏上Web 3D编程之旅- 本系列是实战类型,从0开始带领读者写出"良好架构.良好扩展性.最小功能集合(MVP)" 的3D引擎. 本系列的素材来自我们的产品:Wonder-WebGL 3D引擎和编辑器 的整个开发过程. 与我的"用函数式编程,从0开发3D引擎和编辑器"系列博文的区别: 本系列是它的重写版 本系列是实战类型,而它是经验总结类型 本系列只写引擎,而它既写引擎又写编辑器 为什么本系列只写引擎? 因为大部分人更关心引擎 为了加快写作速…
目录 上一篇博文 函数式编程的优点与缺点 优点 缺点 为什么使用Reason语言 函数式编程学习资料 引擎中相关的函数式编程知识点 数据 不可变数据 可变数据 函数 纯函数 高阶函数 柯西化 参考资料 大家好,本文介绍我们为什么使用函数式编程来开发引擎,以及它在引擎中的相关的知识点. 上一篇博文 从0开发3D引擎(四):搭建测试环境 函数式编程的优点与缺点 优点 (1)粒度小 面向对象编程以类为单位,而函数式编程以函数为单位,粒度更小. 我只想要一个香蕉,而面向对象却给了我整个森林 (2)擅长处…
介绍 大家好,本系列带你踏上Web 3D编程之旅- 本系列是实战类型,从0开始带领读者写出"良好架构.良好扩展性.优秀的性能.最小功能集合(MVP)" 的3D引擎. 本系列的素材来自我们的产品:Wonder-WebGL 3D引擎和编辑器 的整个开发过程. 详细介绍请见: 从0开发3D引擎(一):开篇 目录 第一部分:准备 从0开发3D引擎(一):开篇 从0开发3D引擎(二):准备预备知识 从0开发3D引擎(三):搭建开发环境 从0开发3D引擎(四):搭建测试环境 第二部分:基础 从0开…
目录 上一篇博文 运行测试截图 需求分析 目标 特性 头脑风暴 确定需求 总体设计 具体实现 新建Engine3D项目 实现上下文 实现_init 实现"获得WebGL上下文" 实现"初始化所有Shader" 实现"初始化场景" 实现"设置清空颜色缓冲时的颜色值" 返回用于主循环的数据 实现_loop 实现"主循环" 实现"clearCanvas" 实现"_render&quo…
介绍 大家好,欢迎你踏上3D编程之旅- 本系列的素材来自我们的产品:Wonder-WebGL 3D引擎和编辑器 的整个开发过程,探讨了在从0开始构建3D引擎和编辑器的过程中,每一个重要的功能点.设计方案的思考.讨论.总结和延伸. 本系列避免陷入细节的实现代码,使用伪代码代替.所以没有可直接运行的代码,取而代之的是经过抽象和提炼的伪代码/模式. 为什么要写这个系列 我有三个小目标: 1.完全创造 完全从0开始,创造一个有深度.有难度.有挑战的产品. 所以Wonder被创造出来了,并且会持续地发展.…
目录 上一篇博文 下一篇博文 前置知识 回顾上文 最小3D程序完整代码地址 通用语言 将会在本文解决的不足之处 本文流程 解释本文使用的领域驱动设计的一些概念 本文的领域驱动设计选型 设计 引擎名 识别最小3D程序的顶层包含的用户逻辑和引擎逻辑 根据对最小3D程序的顶层的分析,用伪代码初步设计index.html 识别最小3D程序的初始化包含的用户逻辑和引擎逻辑 识别最小3D程序的主循环包含的用户逻辑和引擎逻辑 根据用户逻辑,给出用例图 设计架构,给出架构视图 分析"基础设施层"的&q…
我们使用领域驱动设计(英文缩写为DDD)的方法来设计引擎,在引擎开发的过程中,领域模型会不断地演化. 本文介绍本系列使用的领域驱动设计思想的相关概念和知识点,给出了相关的资料. 上一篇博文 从0开发3D引擎(七):学习Reason语言 下一篇博文 从0开发3D引擎(八):准备"搭建引擎雏形" 概览 下面的资料粗略地介绍了DDD的相关知识点: 领域驱动设计学习输出 领域驱动设计(DDD)部分核心概念的个人理解 系统学习资料 相关资料为: DDD理论学习系列 为什么用DDD 参考领域驱动设…