大家好~现在开始新的系列文章: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. jmeter--jsr223组件使用和功能详解

    相比于BeanShell 取样器,JSR223取样器具有可大大提高性能的功能(编译)如果需要,一定要使用JSR223取样器编写脚本是更好的选择!!! 属性描述名称:显示的此取样器的描述性名称,可自定义 ...

  2. 吉特日化MES系统&生产工艺控制参数对照表

    吉特日化MES生产工艺参数对照表 工艺编号 PROCE_BASE_TIMER 工艺名称 定时器 工艺说明 主要用于生产工艺步骤过程计时 参数编号 参数名称 参数描述 Prop_Timer_Enable ...

  3. MySQL日期查询

    MySQL日期查询 1.今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 2.昨天 SELECT * FROM 表名 WHERE T ...

  4. ROW_NUMBER 开窗函数优化方案(Oracle && PostgreSQL 性能比对)

    帮朋友优化一条很简单的窗口函数 ROW_NUMBER() OVER() , Oracle 迁移 PostgreSQL项目. 原始SQL和执行计划 STUDENT_BAK 表我模拟的数据,3千万行数据. ...

  5. Java五种设计模式实现奶茶订单生成系统小DEMO

    前言 这是大学时候上设计模式这门课写的程序,当时课程任务是要求结合五个设计模式写一个系统,最近偶然翻到,把系统分享一下. 成品预览 主界面 ​ 功能介绍 订单管理系统,实现了对订单的增删改查.且实现了 ...

  6. AD域配置和域用户登录

    ​ DSC控制台连接域服务器的基准DN选中域服务器会显示 ​​ 客户端电脑无法连接服务器时将DNS填写成域服务器IP,并将网络改成自动获取

  7. Wifi BSSID获取

    代码很简单,通过wifiManager 获取wifiinfo,从而获取bssid, public static String getWifiSSID(Context context) { String ...

  8. 【Python】【OpenCV】定位条形码(二)moments和HuMoments

    根据上一篇博客可知,单纯的通过求取最大面积而进行定位的局限性,因此我们接下来将通过cv2.moments()和cv2.HuMoments()这两个方法来在更复杂的环境中去找到我们的目标区域. cv2. ...

  9. 专业的字节码查看工具——jclasslib

    下载地址: GitHub地址:点击下方蓝色链接即可. https://github.com/ingokegel/jclasslib/releases/download/6.0.4/jclasslib_ ...

  10. Odoo16—国际化翻译

    开发odoo系统模块的时候,如果一开始就有国际化的需求,无论是模型的定义还是视图的构建,建议使用英语作为第一语言:一方面,英语本身就是一种国际化的语言:另一方面,odoo内置模型字段描述如Create ...