http://www.cppblog.com/liangairan/archive/2013/03/23/198749.aspx

谈到游戏中的性能优化,说白了就是如何提高帧率和降低内存
提高帧率的基本原则就是减少DP次数,还有是找出时间消耗高的程序代码加以修改。
但引擎涉及的东西非常多,有时优化要从多方面入手,下面一个一个来说明。

首先是水体渲染的优化:
现在很多游戏的习惯做法就是把水放在地某个高度的位置,然后地形在上面,从裁剪的角度来看,只要看得到地形,水是必然会渲染的,但如果我们看到的地形都是在水的上面,那这样渲染就太浪费了。其实有个很简单的做法,就是把地形的block,当然,我们可以把block再细分成一逻辑上的block,每个block要记录是否有地形的顶点在水的下面,有的话,如果这些block要渲染,那水也就渲染,否则水就不渲染。

地形优化:
四叉树地形LOD是最基本的优化方法了,不过这里要注意一点,每个地块对应不同LOD加上不同裂缝组合的indexbuffer,如果一开始把所有这些可能存在的indexbuffer都创建出来,那内存会非常大。我的做法是:当用到某个IndexBuffer的时候才实时创建,这样大大减少了内存。因为有很多种情况下的IndexBuffer在实际情况下是不会用到的。

粒子系统的优化:
传统的粒子系统的做法是在CPU上计算好粒子的四个顶点位置然后再填入纹理,现在有种优化方案是:定义粒子的顶点格式只有中心点和width,height,在CPU上只计算实时的中心点位置与width和height的大小,然后在GPU上再根据这些数据计算回粒子的四个顶点。
这种优化方案可以减少粒子在CPU上的运算量,但虽然利用到shader。
还有是粒子系统要共享VB和IB哦。

骨骼动画优化:
利用GPU计算顶点是骨骼动画优化的最有效手段,现在很多人的做法是只把骨骼动画的矩阵转到GPU,然后在GPU计算每个顶点的位置。这种做法受到了shader寄存器数量的限制。其实还有一种做法是把矩阵写入一个1行的浮点纹理,试想一下,如果是1X1024的浮点纹理,那可以存1024 / 4 = 256个矩阵(1个像素是R32G32B32A32F四个浮点的纹理),这种方式要求显卡支持并占一定的带宽。

模型渲染优化:
可以利用hardware instancing,LOD等方法。带骨骼动画的模型,在DX10以上可以实现骨骼动画instancing。

场景优化:
现在流行occullsion优化,就是把被遮挡的物体不渲染出来,我简单地说一下这种实现的原理:
开一个RTT,把在视锥范围内的渲染物取AABB,然后把这个AABB赋一个颜色(每个物体的AABB颜色都不一样),然后渲染的时候把这个颜色作为输出颜色渲染出来。因为开了深度,如果在后面被完全遮挡的物体,那最终这张RTT纹理是不存在这个物体的颜色,根据一些方法可以知道这个纹理是否有这颜色,然后通过这个颜色索引回该物体,然后把它剔除掉。DX9的occullsion query就是这样弄。还有Occlusion Culling,我相信原理也是类似这样。

陆续更新中……

转载于:https://www.cnblogs.com/pulas/archive/2013/03/24/2978308.html

[转]游戏中各种性能优化方法(不断更新)相关推荐

  1. 谈谈VR游戏中的性能优化

    VR游戏相对传统游戏,个人认为主要有三个方面的不同:玩法设计,输入方式,性能压力.今天就来谈一下VR游戏中的性能优化. 为什么VR游戏的性能压力很大? ·主要有三个因素的影响:高帧率,高分辨率,画两遍 ...

  2. Android中的性能优化方法

    文章目录 1. 为什么要进行性能优化 2. 提高应用性能的优化方向 2.1 布局优化 2.1.1 merge标签 2.1.2 ViewStub标签 2.2 绘制优化 2.3 内存泄露 2.3.1 静态 ...

  3. Android 性能优化方法

    2019独角兽企业重金招聘Python工程师标准>>> Android 性能优化方法 对于一些Android项目,影响性能瓶颈的主要是Android自己内存管理机制问题,目前手机厂商 ...

  4. 大主子表关联的性能优化方法

    [摘要] 主子表是数据库最常见的关联关系之一,最典型的包括合同和合同条款.订单和订单明细.保险保单和保单明细.银行账户和账户流水.电商用户和订单.电信账户和计费清单或流量详单.当主子表的数据量较大时, ...

  5. HBase性能优化方法总结(四):数据计算

    本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第四部分内容:数据计算相关的优化方法 ...

  6. HBase性能优化方法总结(4):读表操作

    来自:http://www.cnblogs.com/panfeng412/archive/2012/03/08/hbase-performance-tuning-section3.html 本文主要是 ...

  7. HBase性能优化方法总结(3):写表操作

    本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第二部分内容:写表操作相关的优化方法 ...

  8. HBase性能优化方法总结(2):表的设计

    本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第一部分内容:表的设计相关的优化方法 ...

  9. 列举6个常见且实用的Web前端性能优化方法

    在如今这个信息爆炸的时代,人们的节奏总是快速的,对于一个网站的耐心毕竟是有限的可怜的,如果网站不进行优化必定会流失相当一部分的客户,带来不必要的损失.那么从Web前端的性能优化上来说有哪些常见.实用的 ...

最新文章

  1. mysql分页关键词_数据库分页关键字
  2. java 锁旗标_Java多线程
  3. 一个IT青年北漂四年的感悟
  4. Linux下没有包含头文件(不知是哪个)导致编译无法通过的解决心得
  5. webgis 行政图报错_WebGIS 地图 示例源码下载
  6. C#关键字详解第一节
  7. java抠图边框颜色处理_java 实现抠图(项目应用场景:抠图章)
  8. oracle添加路由,创建持久性(静态)路由
  9. java构造器 权限_一文搞懂Java的 构造方法 和 访问权限
  10. 随机森林的基分类器可否由决策树替换为线性分类器或者K-NN?
  11. 中国语音产业的江湖史
  12. MATLAB中的信号处理
  13. 【优雅解决】:换源后 sudo apt-get update 出现 N: Updating from such a repository can't be done securely……
  14. 关于OpenCV中cv2.imwrite保存的图片是全黑色的解决方案
  15. python实用性函数分享_17.【Python学习分享文章】function(函数)1
  16. ramdisk“snmptraps”已满。因此,无法写入文件
  17. 项目7 创建与使用触发器
  18. 1990-2020年各行业竞争度--赫芬达尔指数表
  19. ASP.net 仿QQ弹出窗口
  20. 工序质量评价及改进(转载)

热门文章

  1. CSS 多浏览器兼容又一方案
  2. 最近看的电影(乱谈)
  3. research meeting updates points
  4. cambridge ccaf potential supervisors!
  5. 对管理学的认识 知乎摘抄
  6. jetbrains是最好的编译器系列
  7. springmvc拦截器无法拦截jsp
  8. 18、Page Object 设计模式
  9. 考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传
  10. hdu3037 Lucas定理