2_flyweight, 轻量化模式
- ### instanced rendering.
- send shared data to gpu just once
- mesh, texture, leaves
- push every instance’s unique data
- position, color, scale
- With a single draw call, an entire forest grows.
- unity3d
- Using instances of a prefab automatically are using the same mesh and material.
- ### the flyweight pattern
- 当拥有大量同样的obj时,则需要更多的轻量化
- 把一个ojb分成两类
- : intrinsic state, 共享的数据, content—free stuff
- : extrinsic state, 独有的数据,
- example
- ```
- intrinsic state: 世界包含若干种地形
- extrinsic state: 不同的位置具有不同的地形,指向相应的地形
- class Terrain
- {
- public:
- Terrain(int movementCost,
- bool isWater,
- Texture texture)
- : movementCost_(movementCost),
- isWater_(isWater),
- texture_(texture)
- {}
- int getMovementCost() const { return movementCost_; }
- bool isWater() const { return isWater_; }
- const Texture& getTexture() const { return texture_; }
- private:
- int movementCost_;
- bool isWater_;
- Texture texture_;
- };
- class World
- {
- public:
- World()
- : grassTerrain_(, false, GRASS_TEXTURE),
- hillTerrain_(, false, HILL_TEXTURE),
- riverTerrain_(, true, RIVER_TEXTURE)
- {}
- private:
- Terrain grassTerrain_;
- Terrain hillTerrain_;
- Terrain riverTerrain_;
- // Other stuff...
- };
- void World::generateTerrain()
- {
- // Fill the ground with grass.
- for (int x = ; x < WIDTH; x++)
- {
- for (int y = ; y < HEIGHT; y++)
- {
- // Sprinkle some hills.
- if (random() == )
- {
- tiles_[x][y] = &hillTerrain_;
- }
- else
- {
- tiles_[x][y] = &grassTerrain_;
- }
- }
- }
- // Lay a river.
- int x = random(WIDTH);
- for (int y = ; y < HEIGHT; y++) {
- tiles_[x][y] = &riverTerrain_;
- }
- }
- const Terrain& World::getTile(int x, int y) const
- {
- return *tiles_[x][y];
- }
- int cost = world.getTile(, ).getMovementCost();
- ```
- ###其他应用
- 工厂方法
- 对象池
- 状态机
2_flyweight, 轻量化模式的更多相关文章
- js便签笔记(14)——用nodejs搭建最简单、轻量化的http server
1. 引言 前端程序猿主要关注的是页面,你可能根本就用不到.net,java,php等后台语言. 但是你制作出来的网页总要运行.总要测试吧?——那就免不了用到http server.我先前都是用vis ...
- 卷积神经网络学习笔记——轻量化网络MobileNet系列(V1,V2,V3)
完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和Mo ...
- 新上线!3D单模型轻量化硬核升级,G级数据轻松拿捏!
"3D模型体量过大.面数过多.传输展示困难",用户面对这样的3D数据,一定不由得皱起眉头.更便捷.快速处理三维数据,是每个3D用户对高效工作的向往. 在老子云最新上线的单模型轻量化 ...
- 轻量化ViewControllers,读文章做的总结
推荐一个网站 http://objccn.io/ 我这两天才开始看 获益匪浅 看了第一篇文章 <更轻量的View Controllers>感觉写的不错 感觉作者 原文地址 http://o ...
- 轻量化卷积神经网络MobileNet论文详解(V1&V2)
本文是 Google 团队在 MobileNet 基础上提出的 MobileNetV2,其同样是一个轻量化卷积神经网络.目标主要是在提升现有算法的精度的同时也提升速度,以便加速深度网络在移动端的应用.
- 基于WebGL/Threejs技术的BIM模型轻量化之图元合并
伴随着互联网的发展,从桌面端走向Web端.移动端必然的趋势.互联网技术的兴起极大地改变了我们的娱乐.生活和生产方式.尤其是HTML5/WebGL技术的发展更是在各个行业内引起颠覆性的变化.随着WebG ...
- 铁大Facebook轻量化界面NABCD
界面轻量化: N:满足了用户更快速.更直接.更方便寻求自己所要信息的需求,不被复杂界面以及各种广告所困扰. A:我们将会用Bootstrap工具包开发前端界面,Bootstrap是基于jQuery框架 ...
- 毕加索发布轻量化转化引擎及BIMSOP协作云平台
一直以来,杂务缠身,博客都好久没有更新了,以后还是要继续坚持总结一下.希望能有时间坚持下去 :) 月初在国家会议中的智能展会上,我分享了毕加索公司近来的工作,即自行研发的轻量化转化云平台,以及以此为基 ...
- 【本地服务器】用nodejs搭建最简单、轻量化的http server
1. 引言 前端程序猿主要关注的是页面,你可能根本就用不到.net,java,php等后台语言. 但是你制作出来的网页总要运行.总要测试吧?——那就免不了用到http server.我先前都是用vis ...
随机推荐
- 弹窗:popwindow 4部分
弹窗:popwindow 四部分 ①windows.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
- NumPy入门基础【2】
通用函数ufunc 一元ufunc举例: 1.abs.fabs:计算绝对值,fabs更快 2.sqrt:计算各元素的平方根,相当于arr0.5 3.square:计算各元素的平方根,相当远arr2 4 ...
- hdu_吃糖果(思维题)
吃糖果 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total Submiss ...
- What I learned from competing against a ConvNet on ImageNet
http://karpathy.github.io/2014/09/02/what-i-learned-from-competing-against-a-convnet-on-imagenet/
- centos7 运行postgres 数据库脚本db.sql
[root@localhost ~]# su postgresbash-4.2$ psqlcould not change directory to "/root": Permis ...
- 基本操作——word中怎样同一页中放入多张图片
可能很多人在放图片时候,碰见这种情况,习惯性的把图片拖进word,发现不能在一页上很工整的排列.很多人包括我刚开始也纳闷,怎么不能一页中放入几张图片呢,缩放也不想.下面分享一个小技巧给有缘人 以我的w ...
- Django下MEDIA_ROOT, MEDIA_URL, STATIC_ROOT, STATIC_URL解惑
Django中settings中的四个设置参数的一些故事: MEDIA_ROOT, MEDIA_URL, STATIC_ROOT, STATIC_URL 1.MEDIA_ROOT与MEDIA_URL ...
- let和var以及const有什么区别
在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. for(var i=0;i&l ...
- swift ! 和 ? 的学习
刚开始学 这两个符号 不确定到底是否是可以互相替代 用的都混淆了 今天好好做个总结 如果声明一个变量 如下 var name:String? //只声明 没做初始化赋值 说明 当前name 是 n ...
- 【leetcode刷题笔记】Max Points on a Line
Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...