用NVPerfHUD来分析3D程序
来源:互联网 发布:linux卸载jdk1.8 编辑:程序博客网 时间:2024/05/07 16:35
到这里下载其安装文件(包含文档),文档里有详细的使用说明。
最近在使用时,感觉越来越方便,所以在这里说一下最近用的最多的两个功能。
1. 用Frame Debugger来查看单独一帧的渲染情况。
(1) 在Frame Debugger中可以看到多边形的渲染顺序、每次渲染(如DrawIndexedPrimtives)命令所使用的纹理、渲染的目标(后缓存还是纹理等)、渲染命令的调用次数等。
(2) 这些内容通常都是我们需要的,比如我们在使用引擎时,引擎通常会对物体和材质的渲染顺序进行排序,就导致我们的颜色混合不能出现预期的效果,这时候通过FrameDebugger来查看物体及其材质的各个pass是按如何的顺序进行渲染的,就可以查出问题可能的原因,也帮助我们了解了引擎内部的工作原理。
(3) 而像纹理等,我们可以查看其是否是我们所期望的。我们将鼠标放在FrameDebugger窗口中的纹理上,就可显示出鼠标所在位置的纹理的值(如RGBA值),对于一些实时渲染出的纹理或者动态写入数据的纹理,这样尤其有用。
(4) 在Advanced页面中还能看到所使用的顶点和片元shader程序。我们可以查看传给着色程序的参数的实际值,以确定其是否正确。
2. 确定性能瓶颈
对不是瓶颈的部分做优化时不会提高程序的性能的,所以要优化程序得先查出性能的瓶颈在哪里。如上图,通常确定性能瓶颈的顺序是从开始渲染管线的最末段开始进行分析,当然如果你大概能猜到瓶颈在哪里,你可以直接从那个部分查起。
(1) 在程序中将颜色缓存从32位改为16位,查看FPS值是否增加,以确定瓶颈是否因为帧真缓存带宽引起。
(2) 在NVPerfHUD中按下Ctrl+T将纹理强行设置为2*2大小,查看FPS值是否增加,以确定瓶颈是否因为纹理带宽引起。
(3) 在NVPerfHUD中按下Ctrl+1、Ctrl+2……Ctrl+9,NVPerfHUD会自动强行简化各个Profile的Pixel Shader程序,查看FPS值是否增加,以确定瓶颈是否因为复杂的像素程序引起。
(4) 在NVPerfHUD中按下Ctrl+V去掉顶点单元,查看FPS值是否增加,以确定瓶颈是否因为顶点处理引起,包括顶点/索引缓存的传输、Vertex Shader程序和无效的缓存Lock。
(5) 在程序中更改顶点格式的大小,查看FPS值是否增加,如果增加则瓶颈在顶点/索引缓存的传输。
(6) 可以利用Ctrl+N去掉GPU的工作,也就是这个时候GPU的计算速度无限快,如果FPS增加则瓶颈在CPU上。
- 用NVPerfHUD来分析3D程序
- 用递归程序来实现1D-FFT
- 超越3D,4D来了...
- 来吧Unity 3D
- 用sparkle来给3d模型打上灯光效果(图解)
- 3D 分析
- 使用正则表达式来分析程序
- 用程序来写程序
- 2D/3D Beam 静力分析
- 3D该来的还是会来的
- 一些3D演示程序
- 3D程序笔试题
- 用JS & HTML5渲染3D花朵(程序艺术)
- 用程序来解数独
- 已知程序crash 地址来分析具体crash 代码
- 使用gprof来对程序的性能分析总结
- Maide Contro:用iPad来操作你的3D软件
- 用基于WebGL的BabylonJS来共享你的3D扫描模型
- rrl
- 测试Web应用程序是否存在跨站点脚本漏洞
- Web服务器证书应用配置手册(五)
- linux 中文显示乱码解决办法
- Flex 相关电子书籍下载链接收录
- 用NVPerfHUD来分析3D程序
- asp.net 上传图像实例
- 我的Maven2之旅:五.pom.xml基本元素介绍
- Displaytag (partialList ="true") 分页例子子
- 修改主机名
- 毕业设计的设计部分笔记6,高阶设计3
- 函数调用规范
- 2008年,中国程序员准则
- BCB创建Active Form