Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Cocos2d-x粒子系统性能从1.x版下降到2.x版_C++_Linux_Qt_Cocos2d X_Meego - Fatal编程技术网

C++ Cocos2d-x粒子系统性能从1.x版下降到2.x版

C++ Cocos2d-x粒子系统性能从1.x版下降到2.x版,c++,linux,qt,cocos2d-x,meego,C++,Linux,Qt,Cocos2d X,Meego,我们想将我们的基本系统从Cocos2d-x 1.0(Qt端口0.6)更改为Cocos2d-x 2.0(Qt端口1.0),但在更改系统之前,有几个任务需要测试。其中一项任务是粒子系统的性能。请记住,当从1.0更改为2.0时,性能会提高,我们发现了相反的情况1.0版的性能似乎比2.0版好得多。现在我们想知道这是否正确,希望有人能给我们一个提示,我们可能会错过什么(Cocos2d-x的错误设置,错误设置,…) 为了测试性能,我们创建了一个简单的测试场景:使用一个粒子系统,在按下场景时可以多次添加该系统

我们想将我们的基本系统从Cocos2d-x 1.0(Qt端口0.6)更改为Cocos2d-x 2.0(Qt端口1.0),但在更改系统之前,有几个任务需要测试。其中一项任务是粒子系统的性能。请记住,当从1.0更改为2.0时,性能会提高,我们发现了相反的情况1.0版的性能似乎比2.0版好得多。现在我们想知道这是否正确,希望有人能给我们一个提示,我们可能会错过什么(Cocos2d-x的错误设置,错误设置,…)

为了测试性能,我们创建了一个简单的测试场景:使用一个粒子系统,在按下场景时可以多次添加该系统。此粒子系统使用不同大小的纹理(4x4px和32x32px)和四粒子系统

测试的基础是Cocos2d-x的HelloWorld示例。此外,我们启用了触摸接收器,创建了批次(如果需要),将标签转换为计数器,并添加了粒子系统插入例程。源代码和资源作为zip存档的链接附在下面

我们比较了Cocos2d-x的Linux版本和Cocos2d-x的Qt(MeeGo Harmatan)版本。测试结果可在excel表格中找到。在每个测试用例中,1.0版本都比2.0版本好。在每个测试案例中,分批粒子系统与Cocos2d-x 2.0中的未分批粒子系统具有相同的性能。在FPS/粒子系统中测量性能

结果:

由于每个效果使用的纹理都很小,因此在批处理和未批处理系统之间看不到性能差异。所以OpenGL的状态变化不多。当使用具有大量透明度的巨大纹理或更多粒子时(由于性能下降,这是不可能的),或者当使用使用不同纹理的不同粒子来进行OpenGL状态更改时,可能会看到更强的效果

因此,总体而言,性能下降可能不仅仅是图形方面,更多的是CPU的高利用率(计算数千个粒子在每个帧中的位置,即:47个粒子系统和350个粒子产生47*350=16450个粒子的有效载荷,需要在每个帧重新计算)。使用批处理粒子时,这也是可以使用的粒子的最高数量,因为GL draw函数使用的是无符号短值,该值在16450个粒子时达到。16450*4(顶点)=65800(ushort=65535)。这可以在桌面机器上使用批处理粒子与未批处理粒子时看到(在屏幕截图上)。将47个粒子插入批处理后,它将停止显示新效果。当添加更多效果时,性能仍然会继续下降,这说明性能损失主要是基于CPU端,而不是GPU。当使用4x4px纹理而不是32x32px纹理时,也可能会注意到这一点(在桌面上),只能再放置大约10个效果

相关主题:

Excel工作表、屏幕截图和源代码可在存档中找到-
http://www.fantasyhaze.com/sof/Particle_Perfromance_Tests.ods

你已经做了研究,但我不确定问题是什么。这读起来像是一份经过充分研究的bug报告。如果你想分享你的知识,你应该发布一个问题和答案,而不是把答案放在问题里。