NVPerfHUD
http://www.cnblogs.com/cproom/archive/2006/11/13/559287.html
NVPerfHUD是一个很好的3D程序调试工具,它是NVPerfKit的一部分,由Nvidia开发,在写D3D程序时(它不能查看OpenGL程序)加入简单的语句就可以利用NVPerfHUD来调试察看显卡的工作情况了。
到这里下载其安装文件(包含文档),文档里有详细的使用说明。
最近在使用时,感觉越来越方便,所以在这里说一下最近用的最多的两个功能。
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场景优化
一) 有效的性能评测 对于任何一个3D应用程序来说,追求场景画面真实感是一个无止尽的目标,其结果就是让我们的场景越来越复杂,模型更加精细,这必然给图形硬件带来极大的负荷以致于无法达到实时绘制帧率.因此 ...
- [Axiom3D]第一个Axiom3D程序
Axiom3D程序的基本渲染流程 #region Namespace Declarations using System; using System.Linq; using Axiom.Core; u ...
随机推荐
- Human Gene Functions(poj 1080)
题目大意是:给定两组DNA序列,要你求出它们的最大相似度 每个字母与其他字母或自身和空格对应都有一个打分,求在这两个字符串中插入空格,让这两个字符串的匹配分数最大 /* 思路是很好想的,设f[i][j ...
- 网络流-最大流 模板(poj 1273)
#include<cstdio> #include<iostream> #include<cstring> #include<queue> #defin ...
- Spring源码下载地址
今天想下载一下Spring的源代码,登录到Spring官网,傻眼了,根本找不到下载的地方!费了九牛二虎之力在网上找到了一个下载地址,记下来,免得下次再次傻找. http://s3.amazonaws. ...
- subversion 版本库数据迁移 从一台服务器迁移到另一台新有服务器
[root@NGINX-APACHE-SVN pro]# pwd /var/www/html/svn/pro [root@NGINX-APACHE-SVN pro]# svnadmin dump /v ...
- C++ 学习的网站
C++入门教程: http://see.xidian.edu.cn/cpp/biancheng/cpp/rumen/
- c# 作业1
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Ubuntu安装sciki-learn及环境
http://scikit-learn.org/stable/install.html 安装python-dev 安装这个包,以后安装各种python扩展包,可以省很多事情. sudo apt-get ...
- hdu 1754 Ihate it
I Hate It Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit St ...
- http://blog.csdn.net/jiazimo/article/details/17265061
http://blog.csdn.net/jiazimo/article/details/17265061
- HDU3341 Lost's revenge(AC自动机+DP)
题目是给一个DNA重新排列使其包含最多的数论基因. 考虑到内存大概就只能这么表示状态: dp[i][A][C][G][T],表示包含各碱基个数为ACGT且当前后缀状态为自动机第i的结点的字符串最多的数 ...