3D编程模式:开篇
大家好~现在开始新的系列文章: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编程模式:开篇的更多相关文章
- 3D编程模式:依赖隔离模式
大家好~本文提出了"依赖隔离"模式 系列文章详见: 3D编程模式:开篇 本文相关代码在这里: 相关代码 目录 编辑器需要替换引擎 设计意图 定义 应用 扩展 最佳实践 更多资料推荐 ...
- 《3D编程模式》写书-第1天记录
大家好,我现在开始写书了,书名为:<3D编程模式> 我会在本系列博文中记录写书的整个过程,感谢大家支持! 这里是所有的的写书记录: <3D编程模式>写书记录 为什么写书 去年我 ...
- 开始3D编程前需注意的十件事
http://www.csdn.net/article/2013-06-21/2815949-3d-programming 原文作者Vasily Tserekh是名3D编程爱好者,他发表了一篇博文&l ...
- 近中期3D编程研究目标
近几年一直在用业余时间研究3D编程,研究的中期目标是建立一个实用的开源3D编程框架.3D编程技术最直接的应用是开发游戏,所以3D编程框架也就是3D游戏开发框架.在我看来,游戏是否好玩的关键是能否为玩家 ...
- UWP简单示例(二):快速开始你的3D编程
准备 IDE:Visual Studio 2015 了解并学习:SharpDx官方GitHub 推荐Demo:SharpDX_D3D12HelloWorld 第一节 世界 世界坐标系是一个特殊的坐标系 ...
- C#编程模式之扩展命令
C#编程模式之扩展命令 前言 根据上一篇的命令模式和在工作中遇到的一些实际情况,有了本篇文章,时时都是学习的一个过程,会在这个过程中发现许多好的模式或者是一种开发方式,今天写出来的就是我工作中常用到的 ...
- Scalaz(54)- scalaz-stream: 函数式多线程编程模式-Free Streaming Programming Model
长久以来,函数式编程模式都被认为是一种学术研究用或教学实验用的编程模式.直到近几年由于大数据和多核CPU的兴起造成了函数式编程模式在一些实际大型应用中的出现,这才逐渐改变了人们对函数式编程无用论的观点 ...
- Scalaz(43)- 总结 :FP就是实用的编程模式
完成了对Free Monad这部分内容的学习了解后,心头豁然开朗,存在心里对FP的疑虑也一扫而光.之前也抱着跟大多数人一样的主观概念,认为FP只适合学术性探讨.缺乏实际应用.运行效率低,很难发展成现实 ...
- Scalaz(10)- Monad:就是一种函数式编程模式-a design pattern
Monad typeclass不是一种类型,而是一种程序设计模式(design pattern),是泛函编程中最重要的编程概念,因而很多行内人把FP又称为Monadic Programming.这其中 ...
- 泛函编程(27)-泛函编程模式-Monad Transformer
经过了一段时间的学习,我们了解了一系列泛函数据类型.我们知道,在所有编程语言中,数据类型是支持软件编程的基础.同样,泛函数据类型Foldable,Monoid,Functor,Applicative, ...
随机推荐
- httpclients 和 okhttp 区别
HttpClient使用介绍使用HttpClient发送请求主要分为以下几步骤: 创建 CloseableHttpClient对象或CloseableHttpAsyncClient对象,前者同步,后者 ...
- 9、For语句
1.for循环概念 程序的流程控制结构一共有三种: 顺序结构,选择结构,循环结构. 顺序结构:代码从上向下逐行的执行 选择结构:条件满足,某些代码才会被执行.0-1次 if语句,switch语句 循环 ...
- Android动态数字输入框
基础view如下: 具体的思路实现: 1:展示textview实现 2: 顶层使用透明的edittext.获取焦点/删除文字等. public class BaseVerificationCodeVi ...
- 万界星空科技MES系统中的生产调度流程
MES系统生产调度的目标是达到作业有序.协调.可控和高效的运行效果,作业计划的快速生成以及面向生产扰动事件的快速响应处理是生产调度系统的核心和关键. 为了顺利生成作业计划,需要为调度系统提供完整的 ...
- Python笔记一之excel的读取
本文首发于公众号:Hunter后端 原文链接:Python笔记一之excel的读取 这里我常用的 python 对于 excel 的读取库有两个,一个是 xlsxwriter 用于操作 excel 的 ...
- PersistenceException 持久性异常
首先查看他提供的错误信息 检查pom.xml文件,查看是否有: 确保文件夹是这种xml格式的 操作maven >>>>clean 和compile 进行清理和重新 ...
- Collection和Map的区别
Collection接口,包含list和set子接口Collection和Map接口之间的主要区别在于:Collection中存储了一组对象,而Map存储关键字/值对.在Map对象中,每一个关键字最多 ...
- Fiddler使用 抓取手机数据包及中文乱码解决方案
https://blog.csdn.net/zyb2017/article/details/79260086
- GPT-4多模态大型语言模型发布
GPT-4 模型是OpenAI开发的第四代大型语言模型(LLM),它将是一个多模态模型,会提供完全不同的可能性-例如文字转图像.音乐甚至视频.GPT 全称为 Generative Pre-traine ...
- Kafka 具体分析
前面的相关文件简要地介绍了 Kafka 的基本使用,本文将将要介绍一下关于 Kafka 的集群关系.存储结构以及架构方面的内容进行简要的解析 组件之间的关系 Kafka 中,各个组件之间的关系如下图所 ...