首页 > 编程语言 >我写了本开源书:《3D编程模式》

我写了本开源书:《3D编程模式》

时间:2023-05-20 10:34:06浏览次数:49  
标签:本书 编程 编辑器 模式 开源 引擎 3D

大家好,我写了本开源书,罗列了我从自己的实战项目中提炼出来的关于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
From: https://www.cnblogs.com/chaogex/p/17416866.html

相关文章

  • 组件化编程
    模块与组件模块向外提供特定功能的js程序--一般就是一个js文件作用--复用js、简化js的编写、提高js运行效率模块化--当应用中的js都是以模块来编写的--这个应用就是一个模块化的应用组件用来实现局部(特定)功能效果的代码集合作用--复用编码--简化项目编码、提高运行......
  • 数字孪生智慧储能电站3D可视化云平台
    电能作为现代社会的运转和发展的基础,是民生最基本的保障,其稳定性对国家经济发展至关重要。建设背景电力系统是一个稳态平衡系统,发电站的总发电功率需要等于用户端的总发电功率。如果两者不一致,就会导致整个电力系统的不稳定或故障。储能电站在各种电力能源和电力需求之间进行缓冲调......
  • 《安富莱嵌入式周报》第312期:开源磁场照相机,仿生神经元PCB,开源无线耳机,手机系统PalmOS
    更新一期视频教程:BSP视频教程第26期:CAN/CANFD/CANopen专题,CANFD整个运行机制精讲,图文并茂,配合综合实战演练(2023-05-15)https://www.armbbs.cn/forum.php?mod=viewthread&tid=119189视频版:https://www.bilibili.com/video/BV1zL41167Ti 1、基于开放系统组装协议OSAP实现的简化硬件设......
  • C#异步编程之async/await
    https://blog.csdn.net/wulex/article/details/127380403  异步、多线程的区别 异步:属于通信的范畴,在发出消息当下不等待对方回应,便开始继续自己的任务。所以c#的很多_异步_操作都在io、socket这些类库下面,都是通信性质的类库, io可以理解向系统内核发送文件......
  • 【做题记录】CodeForces343D Water Tree
    题面翻译给出一棵以\(1\)为根节点的\(n\)个节点的有根树。每个点有一个权值,初始为\(0\)。\(m\)次操作。操作有\(3\)种:将点\(u\)和其子树上的所有节点的权值改为\(1\)。将点\(u\)到\(1\)的路径上的所有节点的权值改为\(0\)。询问点\(u\)的权值。\(1\le......
  • windows 编程模板
    win32消息#include<Windows.h>#include<stdio.h>#include<string.h>//用于在win32中获取控制台HANDLEg_hOutput=NULL;//全局保存实例对象HINSTANCEg_hInstance=NULL;LRESULTCALLBACKWnProc( HWNDhwnd, UINTmsg, WPARAMwparam, LPARAMlpar......
  • Java编程进阶:掌握这五个高级特性让编码更得心应手
    当今,在软件开发中最流行和使用最广泛的语言之一是Java。Java不仅是一种面向对象的编程语言,还可以用于Web开发、移动应用程序编程、云计算和大数据处理。如果你是一个初学者,或者是想要进一步了解Java编程的高级特性,那么这篇文章会帮助你更好地了解Java编程。一、使用lambda表达式在J......
  • 编程打卡:面向对象程序设计测试
    ``gopackagemainimport"bufio"import"flag"import"fmt"import"io"import"os"import"strconv"varinfile*string=flag.String("i","unsorted.dat","Filecontains......
  • 开心档之C++ Web 编程
    C++Web编程什么是CGI?公共网关接口(CGI),是一套标准,定义了信息是如何在Web服务器和客户端脚本之间进行交换的。CGI规范目前是由NCSA维护的,NCSA定义CGI如下:公共网关接口(CGI),是一种用于外部网关程序与信息服务器(如HTTP服务器)对接的接口标准。目前的版本是CGI/1.1,CGI/......
  • VTK 显示3D网格线
    在VTK9.1.0在Windows10+VS2019+Qt5.15.2环境下编译安装的Qt例子中,想显示球体表面的网格线。通过vtkExtractEdges来实现显示全部网格线QSurfaceFormat::setDefaultFormat(QVTKOpenGLNativeWidget::defaultFormat());vtkNew<vtkRenderer>renderer;vtkNew<vtkNam......