一个OpenGL的3D游戏,对其进行性能分析

环境配置:Windows 7 旗舰版    vs2012

通过vs2012的分析菜单选择性能向导:

一个OpenGL的3D游戏,对其进行性能分析_第1张图片一个OpenGL的3D游戏,对其进行性能分析_第2张图片一个OpenGL的3D游戏,对其进行性能分析_第3张图片


完成后,将运行程序,运行两分钟后,结束程序,得到如下的”摘要“报告:


一个OpenGL的3D游戏,对其进行性能分析_第4张图片一个OpenGL的3D游戏,对其进行性能分析_第5张图片一个OpenGL的3D游戏,对其进行性能分析_第6张图片


从上的”摘要“报告分析出:在整个程序运行期间,cpu使用百分比比较平稳地稳定在50%左右,且在这个过程中函数ig4icd32.dll的执行次数遥遥领先,其次是

_md2_drawModelgi。接下来我们打开”调用关系树“,如下:


一个OpenGL的3D游戏,对其进行性能分析_第7张图片一个OpenGL的3D游戏,对其进行性能分析_第8张图片


分析可知,在程序运行后通过消息循环在不断地进行碰撞检测和场景的渲染,可以说碰撞检查是程序中的一个主要模块,也是决定程序运行效率的主要模块。

接下来我们再跟踪下几个耗时的函数,转入”函数详细信息“如下:

一个OpenGL的3D游戏,对其进行性能分析_第9张图片


分析看出:Render函数占了很大的比例,我们看到这个函数主要进行了游戏中人物的设置,场景的渲染等,而其中函数setman和Scene函数的比例占到了70%,于是我们再往下跟踪,分别进入setman和Scene函数,如下:


一个OpenGL的3D游戏,对其进行性能分析_第10张图片


看出,在setman函数主要进行的操作是md2_drawModel,再继续跟踪,如下:

一个OpenGL的3D游戏,对其进行性能分析_第11张图片


可以看到,下层调用的函数是ig4icd32。我们再继续跟踪Scene函数如下:


一个OpenGL的3D游戏,对其进行性能分析_第12张图片一个OpenGL的3D游戏,对其进行性能分析_第13张图片


可以看到到底层时依旧调用的是ig4icd32,因此可以看出我们大量的利用了函数ig4icd32,因此我们可以通过改善ig4icd32函数来提高程序效率,或改用其他更高效的函数来实现相应的功能,也可以通过改善ig4icd32的调用函数来提高程序的效率。
程序执行结果如下:

一个OpenGL的3D游戏,对其进行性能分析_第14张图片一个OpenGL的3D游戏,对其进行性能分析_第15张图片

小结:在这次分析中遇到了许多问题,每一个问题都给自己带来了不小的收获,在这个过程中,锻炼了自己解决问题的能力和解决问题的方式,给自己积累了不少经验,同时我也看到了自己一些有待加强的地方:
1、程序的运行环境和运行配置很重要
2、字符的编码问题
3、英语文献的阅读能力
4、熟悉百度,谷歌的基本搜索技巧
5、积累几个源码网站
6、对一个项目的整体把握力



你可能感兴趣的:(一个OpenGL的3D游戏,对其进行性能分析)