cocos2d-x3.0开发游戏部分机型(显卡类型)闪退问题

news/2024/7/10 5:21:52 标签: cocos2d-x 3.0, 游戏, 闪退, etc, 优化

拓展cocos2d-x3.0底层支持etc图片格式,把游戏中的模型使用etc格式的图片替换。

原先可以运行在联想(lenovo S880,显卡类型是PowerVP SG X 531)的机器上,但是换成etc图片之后进入游戏加载模型的时候就闪退了。
目前大部分其他机型上都没不存在这个问题,只有部分机器会闪退。初步判断有可能是显卡的问题,这个机器的显卡类型是PowerVR SGX 531。不知道各位大大有遇到相同或类似的问题没?

贴上eclipse DDMS上的报错信息:

12-20 15:11:48.559: A/libc(2909):  Fatal signal 11 (SIGSEGV) at 0x53f47000 (code=1)
12-20 15:11:48.992: D/NetworkControllerGemini(309): updateTelephonySignalStrength(0) mOldSignalLevel = 4, msg.arg1 = 4, mSignalLevelMsg = true
12-20 15:11:48.993: D/NetworkControllerGemini(309): isSimInserted(0), SimInserted=true
12-20 15:11:48.993: D/NetworkControllerGemini(309): updateSignalBackgroundBySlotId(0), simInserted=true
12-20 15:11:48.993: D/NetworkControllerGemini(309): isSimInserted(0), SimInserted=true
12-20 15:11:48.994: D/NetworkControllerGemini(309): isSimInserted(1), SimInserted=true
12-20 15:11:48.994: D/NetworkControllerGemini(309): updateOperatorInfo, sim1Inserted is true, sim2Inserted is true.
12-20 15:11:48.994: D/NetworkControllerGemini(309): updateSignalBackgroundBySlotId(0), MobileVisible=true, ResId=2130837922
12-20 15:11:48.994: D/NetworkControllerGemini(309): refreshViews(0), DataConnected=true
12-20 15:11:48.994: D/NetworkControllerGemini(309): refreshViews(0), mMobileActivityIconId=2130837889, mMobileActivityIconIdGemini=-1
12-20 15:11:48.994: D/SignalClusterViewGemini(309): setDataConnected(0), dataConnected=true
12-20 15:11:48.994: D/SignalClusterViewGemini(309): apply, mMobileVisible=true mMobileActivityId=2130837889 mMobileTypeId=2130837775
12-20 15:11:48.994: D/SignalClusterViewGemini(309): isSimInserted(0), SimInserted=true
12-20 15:11:48.995: D/SignalClusterViewGemini(309): apply, mSIMBackground=2130837922
12-20 15:11:48.995: D/SignalClusterViewGemini(309): apply, mMobileVisibleGemini=true mMobileActivityIdGemini=0 mMobileTypeIdGemini=0
12-20 15:11:48.996: D/SignalClusterViewGemini(309): isSimInserted(1), SimInserted=true
12-20 15:11:48.996: D/SignalClusterViewGemini(309): apply, mSIMBackgroundGemini=2130837924
12-20 15:11:48.996: D/SignalClusterViewGemini(309): apply, mDataConnected=true mMobileActivityId=2130837889 mMobileTypeId=2130837775; mDataConnectedGemini=false mMobileActivityIdGemini=0 mMobileTypeIdGemini=0
12-20 15:11:48.996: D/SignalClusterViewGemini(309): setDataNetType3G(0), dataNetType3G=true
12-20 15:11:48.996: D/SignalClusterViewGemini(309): apply, mMobileVisible=true mMobileActivityId=2130837889 mMobileTypeId=2130837775
12-20 15:11:48.997: D/SignalClusterViewGemini(309): isSimInserted(0), SimInserted=true
12-20 15:11:48.997: D/SignalClusterViewGemini(309): apply, mSIMBackground=2130837922
12-20 15:11:48.997: D/SignalClusterViewGemini(309): apply, mMobileVisibleGemini=true mMobileActivityIdGemini=0 mMobileTypeIdGemini=0
12-20 15:11:48.998: D/SignalClusterViewGemini(309): isSimInserted(1), SimInserted=true
12-20 15:11:48.998: D/SignalClusterViewGemini(309): apply, mSIMBackgroundGemini=2130837924
12-20 15:11:48.998: D/SignalClusterViewGemini(309): apply, mDataConnected=true mMobileActivityId=2130837889 mMobileTypeId=2130837775; mDataConnectedGemini=false mMobileActivityIdGemini=0 mMobileTypeIdGemini=0
12-20 15:11:48.998: D/NetworkControllerGemini(309): updateTelephonySignalStrength(0) checkNeedtoSmoothSignal(real_asu = 25, new_asu = 25 )
12-20 15:11:49.164: I/DEBUG(92): debuggerd: tmb file path:'/data/tombstones/tombstone_03'
12-20 15:11:49.164: I/DEBUG(92): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
12-20 15:11:49.164: I/DEBUG(92): Build fingerprint: 'Lenovo/s880/s880:4.0.3/IML74K/Lenovo_S880_S140_120721:user/release-keys'
12-20 15:11:49.164: I/DEBUG(92): pid: 2909, tid: 2929  >>> com.test <<<
12-20 15:11:49.164: I/DEBUG(92):  signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 53f47000
12-20 15:11:49.165: I/DEBUG(92):  r0 5a1ee720  r1 53f46ff8  r2 000000c0  r3 00000000
12-20 15:11:49.165: I/DEBUG(92):  r4 00000000  r5 00000000  r6 00000000  r7 00000000
12-20 15:11:49.165: I/DEBUG(92):  r8 00000000  r9 000697d0  10 5a1f0700  fp 00000008
12-20 15:11:49.165: I/DEBUG(92):  ip 00000000  sp 520cf734  lr 00000007  pc 400d4ce8  cpsr 20000010
12-20 15:11:49.287: I/DEBUG(92):          #00  pc 0000dce8  /system/lib/libc.so
12-20 15:11:49.287: D/AEE/debuggerd(92): stack_depth:1
12-20 15:11:49.287: I/DEBUG(92):          #01  lr 00000007  <unknown>
12-20 15:11:49.287: I/DEBUG(92): code around pc:
12-20 15:11:49.288: I/DEBUG(92): 400d4cc8 24d15001 44c03001 24c04001 24c05001  .P.$.0.D.@.$.P.$
12-20 15:11:49.288: I/DEBUG(92): 400d4cd8 e2522020 ba000005 f5d1f060 f5d1f080    R.....`.......
12-20 15:11:49.288: I/DEBUG(92): 400d4ce8 e8b151f8 e2522020 e8a051f8 aafffffa  .Q..  R..Q......
12-20 15:11:49.288: I/DEBUG(92): 400d4cf8 e2922020 0a00000c e1b0ce02 28b10078    ..........x..(
12-20 15:11:49.288: I/DEBUG(92): 400d4d08 48b10180 28a00078 48a00180 e1b0cf02  ...Hx..(...H....
12-20 15:11:49.288: I/DEBUG(92): code around lr:
12-20 15:11:49.288: I/DEBUG(92): 00000000 ffffffff ffffffff ffffffff ffffffff  ................
12-20 15:11:49.288: I/DEBUG(92): 00000010 ffffffff ffffffff ffffffff ffffffff  ................
12-20 15:11:49.288: I/DEBUG(92): 00000020 ffffffff ffffffff ffffffff ffffffff  ................
12-20 15:11:49.288: I/DEBUG(92): 00000030 ffffffff ffffffff ffffffff ffffffff  ................
12-20 15:11:49.288: I/DEBUG(92): 00000040 ffffffff ffffffff ffffffff ffffffff  ................
12-20 15:11:49.288: I/DEBUG(92): memory map around addr 53f47000:
12-20 15:11:49.288: I/DEBUG(92): 53edd000-53f47000 
12-20 15:11:49.288: I/DEBUG(92): (no map for address)
12-20 15:11:49.288: I/DEBUG(92): 53f73000-53f74000 /dev/pvrsrvkm
12-20 15:11:49.288: I/DEBUG(92): stack:
12-20 15:11:49.288: I/DEBUG(92):     520cf6f4  00000000  
12-20 15:11:49.288: I/DEBUG(92):     520cf6f8  00000000  
12-20 15:11:49.288: I/DEBUG(92):     520cf6fc  00000000  
12-20 15:11:49.288: I/DEBUG(92):     520cf700  00000000  
12-20 15:11:49.288: I/DEBUG(92):     520cf704  00000008  
12-20 15:11:49.288: I/DEBUG(92):     520cf708  00000000  
12-20 15:11:49.288: I/DEBUG(92):     520cf70c  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf710  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf714  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf718  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf71c  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf720  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf724  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf728  df0027ad  
12-20 15:11:49.289: I/DEBUG(92):     520cf72c  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf730  020a8108  [heap]
12-20 15:11:49.289: I/DEBUG(92): #00 520cf734  53f470d8  
12-20 15:11:49.289: I/DEBUG(92):     520cf738  00000100  
12-20 15:11:49.289: I/DEBUG(92):     520cf73c  00000009  
12-20 15:11:49.289: I/DEBUG(92):     520cf740  020a8108  [heap]
12-20 15:11:49.289: I/DEBUG(92):     520cf744  53edd008  
12-20 15:11:49.289: I/DEBUG(92):     520cf748  5a1ee700  /dev/pvrsrvkm
12-20 15:11:49.289: I/DEBUG(92):     520cf74c  4ccafff4  /system/vendor/lib/egl/libGLESv2_mtk.so
12-20 15:11:49.289: I/DEBUG(92):     520cf750  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf754  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf758  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf75c  00000000  
12-20 15:11:49.289: I/DEBUG(92):     520cf760  520cf7bc  
12-20 15:11:49.290: I/DEBUG(92):     520cf764  00000000  
12-20 15:11:49.290: I/DEBUG(92):     520cf768  00000000  
12-20 15:11:49.290: I/DEBUG(92):     520cf76c  5a1de700  /dev/pvrsrvkm
12-20 15:11:49.290: I/DEBUG(92):     520cf770  00000000  
12-20 15:11:49.290: I/DEBUG(92):     520cf774  00000000  
12-20 15:11:49.290: I/DEBUG(92):     520cf778  00000037  
12-20 15:11:49.445: D/AEE/debuggerd(92): stack_depth:19


总结出可能导致游戏闪退的原因:
1.资源没有优化好,导致占用太多内存,被系统强制退出;
2.资源太大撑爆显存导致闪退
3.图片太大(一些低端的机型显卡只支持最大图片大小是1024,那么这个时候就要注意了);
4.图片不是2的幂次方,有些显卡是不支持非2的幂次方的图片(这次闪退的原因就是因为使用etc材质,显卡不支持etc图片非2的幂次方导致,但是支持png为非2的幂次方,所以找了好久才发现这个问题)。
附上我在cocosChina上面的提问 链接

http://www.niftyadmin.cn/n/1459273.html

相关文章

关于I/O的一些记录

前段时间做了一个聊天系统&#xff0c;这个系统需要缓存一些聊天的记录&#xff0c;所以用到了IO。首先&#xff0c;简单那说下我定义的聊天消息的数据结构&#xff0c;该结构包括&#xff1a;聊天对象ID&#xff0c;昵称&#xff0c;聊天内容等关键信息。如果是我发送给别人&a…

coocs2dx-lua在XCode开发时lua和资源热更新问题解决办法

最近由于项目需要发布ios版&#xff0c;所以我转到了mac环境下发布我们的项目。 因为cocos2dx跨平台&#xff0c;所以发布起来倒不是很蛋疼。在开发的过程中发现了一个奇怪的问题&#xff0c;就是每次修改一个lua文件或者资源文件&#xff0c;XCode都必须clean一下再build一下才…

python解压函数extractall在windows上报错FileNotFoundError [Errno 2] No such file or directory

今天遇到一个很奇葩的问题&#xff0c;使用pyhon脚本下载服务器上的一个打包工具到本地&#xff0c;然后解压到本地使用&#xff0c;这个脚本在我个人电脑上可以正常运行&#xff0c;但是在别的电脑上就报错&#xff0c;报错信息如下&#xff1a;FileNotFoundError [Errno 2] N…

ios开发调用OpenAL的alcOpenDevice(NULL)方法返回NULL的原因之一

我们项目是基于cocos2dx 3.0开发&#xff0c;由于修改了cocos的底层代码&#xff0c;所以不能做到和cocos版本同步更新。但是最近发现我们项目在android 5.0系统上面跑起来特别卡&#xff0c;有些甚至掉帧很厉害。经过种种排查&#xff0c;最终发现是cocos2dx 3.0版本的声音引擎…

自定义TTF多语言版本之台湾繁体

最近做台湾的多语言差异化版本&#xff0c;由于一开始我们都是使用简体中文&#xff0c;不论是配置还是ui&#xff0c;所以如果全部手工去装换&#xff0c;处理起来工作量挺大的。在查看到网上查找了一番&#xff0c;发现是有字库可以把简体字转换成繁字体的&#xff0c;这可以…

Unity3D控制Animator播放

有一个需求&#xff0c;要求第一次打开一个界面触发一个动画播放&#xff0c;关闭界面动画播放关闭&#xff0c;再次打开界面继续上次到播放而不是重新开始播放&#xff0c;如果动画播放结束关闭打开界面入口&#xff08;即无法在此进入该界面&#xff09;。 有两种实现方法&am…

Cocos2dx 3.0下的C/C++和Lua通讯以及Object C与Lua通讯

网上关于Cocos2dx开发过程中Lua的使用以及原理教程已经很多了&#xff0c;结合我的开发经验&#xff0c;我在这里稍微整理下。 可以说Cocos2dx-Lua提供了一种很轻便的开发模式&#xff0c;省去了冗长的编译时间&#xff0c;同时让热更成为了很容易的一件事情&#xff0c;不仅仅…

Unity3D中AssetBundle的打包和加载

Unity的资源管理是一个比较复杂的模块&#xff0c;如果管理不好&#xff0c;可能导致最终包体大小偏大&#xff0c;程序运行时候内存居高不下&#xff0c;因此了解并掌握Unity的资源管理显得特别重要。 Unity中资源一般存放在两个目录下&#xff0c;一个是Resource目录&#x…