大家好~现在开始新的系列文章:3D编程模式系列

本系列会介绍从我的实际开发经验中抽象提炼出来的编程模式,大家可直接应用它们到3D引擎开发、编辑器开发等领域中

相关资料:

系列文章目录:

个人相关经验

我已经在Web3D领域有1万小时的开发经验,主要工作包括3D引擎开发、编辑器开发等。

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

我在长期的开发过程中,不断地改进架构设计,发现并应用了很多新的编程模式。这些编程模式是基于函数式编程范式的。

在本系列中,我会与大家分享基于我的实践而发现和应用的编程模式,感谢大家~

为什么需要编程模式?

这个世界处于不断的变化中,需求也在不断的变化

为了应对需求的变化,减少变化影响的范围,我们需要进行设计

在不断地改进设计的过程中,可以发现一些通用的模式。将其抽象和提炼出来,便于沟通交流;将其固化为一套框架,可以减少重复代码

编程模式如何服务于设计?

我们通过下面的几个维度来进行架构设计:

以抽象、封装为基本方法

以高内聚、低耦合为评判标准

以设计原则为指导思想

以编程模式为实现框架

所以编程模式主要应用于架构设计的实现中。如果说设计原则属于战略层面,那么编程模式就属于战术层面。

适用领域

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

3D引擎开发

编辑器及工具开发

当然也可以应用在其它领域,如富应用开发等。

技术栈

  • 使用Typescript或者Rescript作为具体案例的编程语言
  • 使用WebGL作为具体案例的图形API

    WebGL=OpenGL 2.0/DX9

本系列特色

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

目标读者

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

能给读者带来什么收益?

  • 学习函数式编程范式的编程模式
  • 学习3D引擎和编辑器的编程模式
  • 学习编程模式的综合应用和最佳实践

3D编程模式:开篇的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. C#编程模式之扩展命令

    C#编程模式之扩展命令 前言 根据上一篇的命令模式和在工作中遇到的一些实际情况,有了本篇文章,时时都是学习的一个过程,会在这个过程中发现许多好的模式或者是一种开发方式,今天写出来的就是我工作中常用到的 ...

  7. Scalaz(54)- scalaz-stream: 函数式多线程编程模式-Free Streaming Programming Model

    长久以来,函数式编程模式都被认为是一种学术研究用或教学实验用的编程模式.直到近几年由于大数据和多核CPU的兴起造成了函数式编程模式在一些实际大型应用中的出现,这才逐渐改变了人们对函数式编程无用论的观点 ...

  8. Scalaz(43)- 总结 :FP就是实用的编程模式

    完成了对Free Monad这部分内容的学习了解后,心头豁然开朗,存在心里对FP的疑虑也一扫而光.之前也抱着跟大多数人一样的主观概念,认为FP只适合学术性探讨.缺乏实际应用.运行效率低,很难发展成现实 ...

  9. Scalaz(10)- Monad:就是一种函数式编程模式-a design pattern

    Monad typeclass不是一种类型,而是一种程序设计模式(design pattern),是泛函编程中最重要的编程概念,因而很多行内人把FP又称为Monadic Programming.这其中 ...

  10. 泛函编程(27)-泛函编程模式-Monad Transformer

    经过了一段时间的学习,我们了解了一系列泛函数据类型.我们知道,在所有编程语言中,数据类型是支持软件编程的基础.同样,泛函数据类型Foldable,Monoid,Functor,Applicative, ...

随机推荐

  1. 5分钟安装Kubernetes+带你轻松安装istio服务网格指南

    上次我跟大家简单介绍了一下Kubernetes的各个组件及其含义,本期本来计划带领大家一起学习一些常用命令,但我认为这种方式可能无法达到学习的效果.有可能你们会直接忘记,甚至可能没有兴趣去学.我也理解 ...

  2. C# 提取PDF中指定文本、图片的坐标

    获取PDF文件中文字或图片的坐标可以实现精确定位,这对于快速提取指定区域的元素,以及在PDF中添加注释.标记或自动盖章等操作非常有用.本文将详解如何使用国产PDF库通过C# 提取PDF中指定文本或图片 ...

  3. 1、GO语言入门-环境准备

    1.Windows开发环境准备 (1)Golang编译器下载 golang中文网:https://studygolang.com/dl 或者:https://go.dev/dl/ (2)下载解压,找到 ...

  4. visual studio 2013 汇编环境配置

    网上有很多教程,但是第一次运行仍然出现很多问题,后来我发现忽视了几个个重要的点!!!红色字体标注 教程搬自:https://github.com/JunpengCode/Assembly https: ...

  5. 变更(重命名)AD域名称

    文章来自:https://blog.51cto.com/sxleilong/1377731 示例将域名contoso.com重命名为Corp.sxleilong.com 查看当前fsmo的5个角色. ...

  6. Linux集群存储配置

    RH436_EX集群 介绍Linux环境下集群架构,Linux开源集群软件的安装及配置使用,软件与软件之间的组合.实现高可用集群,负载均衡集群;负载均衡.高可用集群与存储集群间的多集群混合架构使用. ...

  7. 神经网络优化篇:详解Mini-batch 梯度下降(Mini-batch gradient descent)

    Mini-batch 梯度下降 机器学习的应用是一个高度依赖经验的过程,伴随着大量迭代的过程,需要训练诸多模型,才能找到合适的那一个,所以,优化算法能够帮助快速训练模型. 其中一个难点在于,深度学习没 ...

  8. UE5: 探究Actor Tick的注册与执行

    1. 前情提要 因工作需要,有在编辑器模式下执行Actor的Tick函数的需求.经过查阅资料,了解到重载Actor::ShouldTickIfViewportOnly函数可以实现在编辑器视口下也可以执 ...

  9. 限制左键拖拽图片阴影vue

    <template> <div> <img ref="image" :src="imageUrl" :style="im ...

  10. C# 查找PDF页面指定区域中的文本并替换和高亮

    对PDF文档中的内容进行查找时,可针对文档全篇内容获取查找结果,也可在PDF指定页面中的特定范围内(矩形框区域)进行查找,对获取的查找结果可执行文本高亮或替换等操作,本文将对此作相关介绍(附VB.NE ...