cocos2dx纹理加载的一点东东
来源:互联网 发布:阿兴网络项目 编辑:程序博客网 时间:2024/05/16 06:45
做了很长事件的cocos2dx,在移植到android的过程中居然被android系统的图片纹理加载给纠结到了。
我们都知道从2.0.3开始,普遍在网上流传的一个解决android的home键,和锁屏键的纹理处理问题;我总结两消一改法,但是这个能真的解决问题吗,
至少没有解决我的问题,因为我的纹理丢了。
可能没看透cocos2dx的源码,我目前的项目中必须要在webview和cocos2dx之间反复切换,cocos2dx设置了一个时间,专门处理长时间没有用到的问题,
所以,如果通过两消一改法的话,玩家在webview玩久了再回来会出现黑屏或者只是加载了部分纹理,例如,动态的头像,和我们的TTF。
根据两消一改给我的提示,找到VolatileTextured的reloadAllTextures方法,你会发现,真正耗时间的地方在我注释“加载纹理的地方”。
case kImageFile:
{
CCImage image;
std::string lowerCase(vt->m_strFileName.c_str());
for (unsignedint i = 0; i < lowerCase.length(); ++i)
{
lowerCase[i] = tolower(lowerCase[i]);
}
if (std::string::npos != lowerCase.find(".pvr"))
{
CCTexture2DPixelFormat oldPixelFormat = CCTexture2D::defaultAlphaPixelFormat();
CCTexture2D::setDefaultAlphaPixelFormat(vt->m_PixelFormat);
vt->texture->initWithPVRFile(vt->m_strFileName.c_str());
CCTexture2D::setDefaultAlphaPixelFormat(oldPixelFormat);
}
else
{
unsignedlong nSize = 0;
unsignedchar* pBuffer = CCFileUtils::sharedFileUtils()->getFileData(vt->m_strFileName.c_str(),"rb", &nSize);
CCLog("加载的纹理的名字是%s",vt->m_strFileName.c_str());
if (image.initWithImageData((void*)pBuffer, nSize, vt->m_FmtImage))
{
CCTexture2DPixelFormat oldPixelFormat = CCTexture2D::defaultAlphaPixelFormat();
CCTexture2D::setDefaultAlphaPixelFormat(vt->m_PixelFormat);
vt->texture->initWithImage(&image);
CCTexture2D::setDefaultAlphaPixelFormat(oldPixelFormat);
}
CCLog("这块位子导致黑屏的结束");
CC_SAFE_DELETE_ARRAY(pBuffer);
}
}
为什么会进入这个地方呢,原因在于CCTextureCache类里的addImage方法:
#if CC_ENABLE_CACHE_TEXTURE_DATA
VolatileTexture::addImageTexture(texture, fullpath.c_str(), eImageFormat);
#endif
- cocos2dx纹理加载的一点东东
- Cocos2dx 异步加载纹理
- 内存操作的一点东东
- 法线贴图的一点东东
- 一点东东
- 暑假时写的一点东东
- cocos2dx 纹理
- [转]加载纹理与使用glGenTextures时应注意的一点(解决吃内存)
- 加载纹理与使用glGenTextures时应注意的一点(解决吃内存)[转]
- D3DM中纹理的加载。
- cocos2dx的图片加载
- 关于OpenGL纹理映射的一点体会
- Direct3D渲染到纹理的一点技巧
- HGE一点东东
- 凌晨一点写东东
- ASP.NET页面的一点小东东(一)
- ASP.NET页面的一点小东东(二)
- 个人收集的一点小东东web-xml
- android 蓝牙操作,主要解决connect失败
- 在apex类获取页面参数值
- 第16周项目一-旧题再做涨工资
- java UDP Socket
- ListView 异步更新出现问题的解决(Handler)
- cocos2dx纹理加载的一点东东
- 第15周C++上机报告(数组重载)
- C/C++ 感悟 --- 神奇的语言
- 【也许你不知道的Word超链接取消三个小技巧】
- 23种设计模式(4):建造者模式
- java记事本改良版
- 第三章 内置数据类型
- 第十六周项目一----重做哦涨了涨了O(∩_∩)O~
- no ContextLoaderListener registered的解决方法