介绍

大家好,本系列带你踏上Web 3D编程之旅~

本系列是实战类型,从0开始带领读者写出“良好架构、良好扩展性、最小功能集合(MVP)” 的3D引擎。

本系列的素材来自我们的产品:Wonder-WebGL 3D引擎和编辑器 的整个开发过程。

与我的“用函数式编程,从0开发3D引擎和编辑器”系列博文的区别:

  • 本系列是它的重写版

  • 本系列是实战类型,而它是经验总结类型

  • 本系列只写引擎,而它既写引擎又写编辑器

为什么本系列只写引擎?

  • 因为大部分人更关心引擎

  • 为了加快写作速度,省略需要较多篇幅的编辑器

本系列特色

1.完全从0开始,强调实战

2.保持精简,只实现最小功能,重点强调架构扩展

3.完全、彻底地使用函数式编程

现在3D领域使用函数式编程的资料很少,主流还是使用面向对象。
我以前也是用面向对象,不过自从我开始接触函数式编程,就拥抱了它。
希望能通过本系列,向读者展示函数式编程的魅力,扩展读者的视野和思维。

能给你带来什么收益?

1.手把手教你如何从0开发3D引擎
2.学习函数式编程及其在3D领域的应用
3.学习3D编程中基础的功能实现,如纹理、光照、模型等
4.学习引擎的设计和架构,如Data Oriented、多线程等

本系列技术选型

  • 使用Reason语言(函数式编程语言,可编译为Javascript)

Reason的相关评价详见:
如何评价 reasonml ?
如何评价 Facebook 推出的编程语言 Reason?

  • 使用WebGL 1作为底层API

引擎的特色

  • 函数式编程

  • 使用“函数式反应式编程”(FRP)实现异步

  • 多线程渲染

  • Data Oriented

  • 契约检查

  • 基于job的可扩展的渲染管道

  • 流加载

引擎支持的运行环境

重点支持桌面端浏览器(引擎的多线程渲染等功能只能在桌面端开启):

  • Chrome
  • Firefox
  • 360 browser(v10.0及以上)
  • qq browser(v10.4及以上)

也能够支持移动端浏览器:

  • 微信浏览器(安卓4.4及以上、ios 8及以上)

内容规划

本系列分成六个部分:

第一部分:准备(没有开始写)

主要内容:

  • 准备预备知识
  • 搭建开发环境
  • 搭建测试环境

第二部分:基础(没有开始写)

主要内容:

  • 学习函数式编程

  • 学习函数式反应式编程

  • 学习Reason

第三部分:搭建雏形(没有开始写)

主要内容:

  • 编写最小的3D程序

  • 从中提炼引擎

  • 改进引擎架构

第四部分:增加功能(没有开始写)

主要内容:

  • 增加基础功能

  • 加入Scene Graph

第五部分:增强扩展性(没有开始写)

主要内容:

  • 加入脚本组件

  • 加入自定义材质

  • 加入其它可能的扩展,如ui扩展等

第六部分:应用(没有开始写)

主要内容:

  • 通过引擎支持的扩展,加入实际应用需要的功能(如picking等)

  • 实现几个完整的3D应用

参考资料

Wonder-WebGL 3D引擎和编辑器
“用函数式编程,从0开发3D引擎和编辑器”系列博文

最新文章

  1. 产品研发过程中UCD目标的制定与实现
  2. fir.im Weekly - 如何打造真正的工程师文化
  3. git_sop 脚本使用说明
  4. 基于spring mvc的注解DEMO完整例子
  5. eclipse 安装git
  6. gnu c语言中的?:的作用
  7. JS身份证真实性校验(二)
  8. js中的隐式转换
  9. HDU 1104 Remainder (BFS)
  10. sql一些命令
  11. 详解ebs接口之客户配置文件导入(一)
  12. 【C语言编程练习】7.2动态数列排列
  13. Spring Cloud 微服务笔记(七) Zuul入门
  14. mybatis查询语句的背后之参数解析
  15. HDu4794 斐波那契循环节
  16. ConcurrentHashMap1.8源码解析
  17. 阿里云url解析,发布web后去除url中的端口号
  18. Netty高性能之Reactor线程模型
  19. LR、HMM、CRF和MaxEnt区别
  20. sql server 2000 错误229 拒绝了对象sysobjects 的select 权限

热门文章

  1. 数组的查找,删除 Day07
  2. 《C语言深度解剖》学习笔记之符号
  3. oracle函数 sysdate
  4. oracle函数 trunc(x[,y])
  5. oracle函数 SUBSTRB(c1,n1[,n2])
  6. mysql统计信息相关
  7. js最简单的对数字的排序
  8. [C++] 烦人的error LNK2019和error LNK2001
  9. svn 冲突解决办法(黄色感叹号)
  10. 2018-2-13-C#-通配符转正则