大家好,我写了本开源书,罗列了我从自己的实战项目中提炼出来的关于3D编程(主要包括“3D引擎/游戏引擎”、“编辑器”开发)的各种编程模式

本书的在线阅读地址在这里:在线阅读

本书的源码在Github中,欢迎star,感恩您:Github地址

本书的写作花了我300多个小时,将近3个月的全职写作,凝结了我一万小时的开发经验,希望把最精华的部分抽象成“模式”,提供给大家使用,帮助大家设计出架构良好的3D引擎和编辑器

整个写作过程我记录在下面的文章中:

《3D编程模式》写书记录

关于本书作者

本书作者是杨元超,他之前在腾讯、阿里工作过,在Web3D领域有1万小时的开发经验,主要负责Web3D引擎开发、编辑器开发

他的代表作如下:

他至少完全重写了5次3D引擎,完全重写了2次编辑器,commit至少7000次,有效代码行数至少20万以上。

他为4家公司提供了3D引擎和编辑器的技术顾问、咨询的服务

他主要有下面的技术成果:

我有什么知识沉淀

本书特色

  • 使用函数式编程范式
  • 每个模式相互独立,用户可以选择性的阅读,降低学习成本
  • 模式是从实际开发经验中提炼而来,实战性强

读者对象

本书提出的3D编程模式主要适用于:

  • 3D引擎开发
  • 编辑器及工具开发

本书的目标读者如下:

  • 3D引擎、游戏引擎开发者
  • 编辑器开发者
  • Web3D开发者
  • 函数式编程的爱好者

本书能给读者带来下面的收益:

  • 学习适用于函数式编程的设计原则
  • 学习3D引擎和编辑器的编程模式
  • 可以直接应用案例代码到项目中

本书主要内容

本书共分为8个章节,第1章结合项目的实战应用案例,回顾经典的设计原则;第2-8章根据自己Web3D引擎和编辑器的项目经验,提出了7种新的3D编程模式

本书目录:

  • 第1章 再看设计原则
  • 第2章 依赖隔离模式
  • 第3章 积木模式
  • 第4章 管道模式
  • 第5章 ECS模式
  • 第6章 多线程模式
  • 第7章 撤销重做模式
  • 第8章 拼接模式

如何阅读本书

本书中所有的例子都是用Typescript和Rescript语言实现的,以Typescript语言为主,其中图形API使用WebGL

在阅读此书前,读者应当有至少2年的开发经验,使用过WebGL、OpenGL、DX9等图形API或者开发过编辑器、工具等应用

我建议读者按照下面的顺序阅读本书:

1.阅读第一章,了解各个设计原则的定义和相关的案例说明

2.按照个人的需要,选择性地阅读第二到八章的各个模式章节。读者可以首先阅读模式章节中的“使用场景”,如果符合自己的需求再详细阅读该模式章节

致谢

感谢各位热心的读者给出阅读反馈!感谢各位老师、大德的支持!

我写了本开源书:《3D编程模式》的更多相关文章

  1. 《3D编程模式》写书-第1天记录

    大家好,我现在开始写书了,书名为:<3D编程模式> 我会在本系列博文中记录写书的整个过程,感谢大家支持! 这里是所有的的写书记录: <3D编程模式>写书记录 为什么写书 去年我 ...

  2. 3D编程模式:依赖隔离模式

    大家好~本文提出了"依赖隔离"模式 系列文章详见: 3D编程模式:开篇 本文相关代码在这里: 相关代码 目录 编辑器需要替换引擎 设计意图 定义 应用 扩展 最佳实践 更多资料推荐 ...

  3. 为了支持AOP的编程模式,我为.NET Core写了一个轻量级的Interception框架[开源]

    ASP.NET Core具有一个以ServiceCollection和ServiceProvider为核心的依赖注入框架,虽然这只是一个很轻量级的框架,但是在大部分情况下能够满足我们的需要.不过我觉得 ...

  4. UWP简单示例(二):快速开始你的3D编程

    准备 IDE:Visual Studio 2015 了解并学习:SharpDx官方GitHub 推荐Demo:SharpDX_D3D12HelloWorld 第一节 世界 世界坐标系是一个特殊的坐标系 ...

  5. UWP简单示例(二):快速开始你的3D编程

    准备 IDE:Visual Studio 开源库:GitHub.SharpDx 入门示例:SharpDX_D3D12HelloWorld 为什么选择 SharpDx? SharpDx 库与 UWP 兼 ...

  6. 近中期3D编程研究目标

    近几年一直在用业余时间研究3D编程,研究的中期目标是建立一个实用的开源3D编程框架.3D编程技术最直接的应用是开发游戏,所以3D编程框架也就是3D游戏开发框架.在我看来,游戏是否好玩的关键是能否为玩家 ...

  7. 谁会拒绝一个开源的 3D 博客呢?

    说到博客大家一定都不陌生,不管你是深耕职场多年的老鸟,还是在学校努力学习的小鸟,应该都有过一段"装扮"博客的经历,比如:放上喜欢的图片.添加炫酷的交互.换上 DIY 的博客主题等等 ...

  8. 开始3D编程前需注意的十件事

    http://www.csdn.net/article/2013-06-21/2815949-3d-programming 原文作者Vasily Tserekh是名3D编程爱好者,他发表了一篇博文&l ...

  9. QT Graphics-View 3D编程例子- 3D Model Viewer

    学习在Graphics-View框架中使用opengl进行3D编程,在网上找了一个不错的例子“3D Model Viewer”,很值得学习. 可以在http://www.oyonale.com/acc ...

  10. 用vue写一个仿简书的轮播图

    原文地址:用vue写一个仿简书的轮播图 先展示最终效果: Vue的理念是以数据驱动视图,所以拒绝通过改变元素的margin-top来实现滚动效果.写好css样式,只需改变每张图片的class即可实现轮 ...

随机推荐

  1. .NET周报 【3月第2期 2023-03-12】

    国内文章 ASP.NET Core中如何限制响应发送速率(不是调用频率) https://www.cnblogs.com/coredx/p/17195492.html ASP.NET Core中有很多 ...

  2. 11.1/2 鼠标显示问题(harib08a)11.2 实现画面外的支持(harib08b)

    ps:能力有限,若有错误及纰漏欢迎指正.交流 11.1 鼠标显示问题(harib08a) 存在问题: ​ 在harib07d中鼠标移动到最右侧后就不能再往右移了 解决办法: 将 if (mx > ...

  3. DES & 3DES 简介 以及 C# 和 js 实现【加密知多少系列】

    〇.简介 1.DES 简介 DES 全称为 Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,1977 年被美国联邦政府的国家标准局确定为联邦资料处理标准( ...

  4. 基于VirutalBox搭建虚拟机间互通的可访问公网的mini主机群

    目标 在单台PC机上安装3+台虚拟机[1] 这些虚拟机间可以相互访问 宿主机[2]与虚拟机可以相互访问 虚拟机可以访问公网 本文将采用 NAT + Host-Only 双网卡的方式实现上述目标,因为采 ...

  5. 当后端人员未提供接口,前端人员该怎么测试 --mock

    1.回顾 2.线上的mock http://rap2.taobao.org/ https://www.easy-mock.com/ 3.线上接口文档 Swagger https://swagger.i ...

  6. 聊聊Spring扩展点BeanPostProcessor和BeanFactoryPostProcessor

    介绍 今天聊一聊spring中很重要的两个扩展点BeanPostProcessor和BeanFactoryPostProcessor,spring之所以如次强大,是因为它提供了丰富的功能给我们使用,但 ...

  7. Linux 磁盘空间查看及清理

    1. 查看磁盘空间 查看当前目录各文件夹大小 du -ah -x --max-depth=1 查看文件大小 ls -lh 查看系统空间占用 df -h 2. 磁盘空间清理 Linux清除文件内容 ca ...

  8. 二进制安装Kubernetes(k8s) v1.26.0 IPv4/IPv6双栈

    二进制安装Kubernetes(k8s) v1.26.0 IPv4/IPv6双栈 https://github.com/cby-chen/Kubernetes 开源不易,帮忙点个star,谢谢了 介绍 ...

  9. SpringIOC注入

    在lagou的训练营的学习历程 SpringIOC实例化Bean的三种方式:1.使用无参构造器2.静态方法3.实例化方法.他要先实例化创建类(和2的区别),再调用. XML注入属性DI依赖注入,根据实 ...

  10. [Java]排序算法>插入排序>【直接插入排序】(O(N*N)/稳定/N较小/有序/顺序存储+链式存储)

    1 直接插入排序 1.1 算法思想 插入排序的基本思想是:每一趟将1个待排序的记录,按其关键字的大小插入到已经排好序的一组记录的适当位置上,直到所有待排序记录全部插入为止. 1.2 算法特征 属于[插 ...