1. ### instanced rendering.
  2. send shared data to gpu just once
  3. mesh, texture, leaves
  4. push every instances unique data
  5. position, color, scale
  6.  
  7. With a single draw call, an entire forest grows.
  8.  
  9. unity3d
  10. Using instances of a prefab automatically are using the same mesh and material.
  11.  
  12. ### the flyweight pattern
  13.  
  14. 当拥有大量同样的obj时,则需要更多的轻量化
  15.  
  16. 把一个ojb分成两类
  17. : intrinsic state, 共享的数据, contentfree stuff
  18. : extrinsic state, 独有的数据,
  19.  
  20. example
  21.  
  22. ```
  23. intrinsic state: 世界包含若干种地形
  24. extrinsic state: 不同的位置具有不同的地形,指向相应的地形
  25.  
  26. class Terrain
  27. {
  28. public:
  29. Terrain(int movementCost,
  30. bool isWater,
  31. Texture texture)
  32. : movementCost_(movementCost),
  33. isWater_(isWater),
  34. texture_(texture)
  35. {}
  36.  
  37. int getMovementCost() const { return movementCost_; }
  38. bool isWater() const { return isWater_; }
  39. const Texture& getTexture() const { return texture_; }
  40.  
  41. private:
  42. int movementCost_;
  43. bool isWater_;
  44. Texture texture_;
  45. };
  46.  
  47. class World
  48. {
  49. public:
  50. World()
  51. : grassTerrain_(, false, GRASS_TEXTURE),
  52. hillTerrain_(, false, HILL_TEXTURE),
  53. riverTerrain_(, true, RIVER_TEXTURE)
  54. {}
  55.  
  56. private:
  57. Terrain grassTerrain_;
  58. Terrain hillTerrain_;
  59. Terrain riverTerrain_;
  60.  
  61. // Other stuff...
  62. };
  63.  
  64. void World::generateTerrain()
  65. {
  66. // Fill the ground with grass.
  67. for (int x = ; x < WIDTH; x++)
  68. {
  69. for (int y = ; y < HEIGHT; y++)
  70. {
  71. // Sprinkle some hills.
  72. if (random() == )
  73. {
  74. tiles_[x][y] = &hillTerrain_;
  75. }
  76. else
  77. {
  78. tiles_[x][y] = &grassTerrain_;
  79. }
  80. }
  81. }
  82.  
  83. // Lay a river.
  84. int x = random(WIDTH);
  85. for (int y = ; y < HEIGHT; y++) {
  86. tiles_[x][y] = &riverTerrain_;
  87. }
  88. }
  89.  
  90. const Terrain& World::getTile(int x, int y) const
  91. {
  92. return *tiles_[x][y];
  93. }
  94.  
  95. int cost = world.getTile(, ).getMovementCost();
  96.  
  97. ```
  98. ###其他应用
  99. 工厂方法
  100. 对象池
  101. 状态机

2_flyweight, 轻量化模式的更多相关文章

  1. js便签笔记(14)——用nodejs搭建最简单、轻量化的http server

    1. 引言 前端程序猿主要关注的是页面,你可能根本就用不到.net,java,php等后台语言. 但是你制作出来的网页总要运行.总要测试吧?——那就免不了用到http server.我先前都是用vis ...

  2. 卷积神经网络学习笔记——轻量化网络MobileNet系列(V1,V2,V3)

    完整代码及其数据,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/DeepLearningNote 这里结合网络的资料和Mo ...

  3. 新上线!3D单模型轻量化硬核升级,G级数据轻松拿捏!

    "3D模型体量过大.面数过多.传输展示困难",用户面对这样的3D数据,一定不由得皱起眉头.更便捷.快速处理三维数据,是每个3D用户对高效工作的向往. 在老子云最新上线的单模型轻量化 ...

  4. 轻量化ViewControllers,读文章做的总结

    推荐一个网站 http://objccn.io/ 我这两天才开始看 获益匪浅 看了第一篇文章 <更轻量的View Controllers>感觉写的不错 感觉作者 原文地址 http://o ...

  5. 轻量化卷积神经网络MobileNet论文详解(V1&V2)

    本文是 Google 团队在 MobileNet 基础上提出的 MobileNetV2,其同样是一个轻量化卷积神经网络.目标主要是在提升现有算法的精度的同时也提升速度,以便加速深度网络在移动端的应用.

  6. 基于WebGL/Threejs技术的BIM模型轻量化之图元合并

    伴随着互联网的发展,从桌面端走向Web端.移动端必然的趋势.互联网技术的兴起极大地改变了我们的娱乐.生活和生产方式.尤其是HTML5/WebGL技术的发展更是在各个行业内引起颠覆性的变化.随着WebG ...

  7. 铁大Facebook轻量化界面NABCD

    界面轻量化: N:满足了用户更快速.更直接.更方便寻求自己所要信息的需求,不被复杂界面以及各种广告所困扰. A:我们将会用Bootstrap工具包开发前端界面,Bootstrap是基于jQuery框架 ...

  8. 毕加索发布轻量化转化引擎及BIMSOP协作云平台

    一直以来,杂务缠身,博客都好久没有更新了,以后还是要继续坚持总结一下.希望能有时间坚持下去 :) 月初在国家会议中的智能展会上,我分享了毕加索公司近来的工作,即自行研发的轻量化转化云平台,以及以此为基 ...

  9. 【本地服务器】用nodejs搭建最简单、轻量化的http server

    1. 引言 前端程序猿主要关注的是页面,你可能根本就用不到.net,java,php等后台语言. 但是你制作出来的网页总要运行.总要测试吧?——那就免不了用到http server.我先前都是用vis ...

随机推荐

  1. 弹窗:popwindow 4部分

    弹窗:popwindow 四部分 ①windows.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...

  2. NumPy入门基础【2】

    通用函数ufunc 一元ufunc举例: 1.abs.fabs:计算绝对值,fabs更快 2.sqrt:计算各元素的平方根,相当于arr0.5 3.square:计算各元素的平方根,相当远arr2 4 ...

  3. hdu_吃糖果(思维题)

    吃糖果 Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submiss ...

  4. 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/

  5. centos7 运行postgres 数据库脚本db.sql

    [root@localhost ~]# su postgresbash-4.2$ psqlcould not change directory to "/root": Permis ...

  6. 基本操作——word中怎样同一页中放入多张图片

    可能很多人在放图片时候,碰见这种情况,习惯性的把图片拖进word,发现不能在一页上很工整的排列.很多人包括我刚开始也纳闷,怎么不能一页中放入几张图片呢,缩放也不想.下面分享一个小技巧给有缘人 以我的w ...

  7. Django下MEDIA_ROOT, MEDIA_URL, STATIC_ROOT, STATIC_URL解惑

    Django中settings中的四个设置参数的一些故事: MEDIA_ROOT, MEDIA_URL, STATIC_ROOT, STATIC_URL 1.MEDIA_ROOT与MEDIA_URL ...

  8. let和var以及const有什么区别

    在JavaScript中有三种声明变量的方式:var.let.const. var:声明全局变量,换句话理解就是,声明在for循环中的变量,跳出for循环同样可以使用. for(var i=0;i&l ...

  9. swift ! 和 ? 的学习

    刚开始学 这两个符号 不确定到底是否是可以互相替代 用的都混淆了 今天好好做个总结 如果声明一个变量 如下 var  name:String?  //只声明 没做初始化赋值 说明 当前name 是 n ...

  10. 【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. ...