cocos 添加遮罩后白屏_cocos2d-x 10.1版本 修复真机上白屏问题

########################################################

10.1 版本修改底层记录 (游戏开发群:主席)

群号:44727718

#######################################################

1. 修改:CCTextureCache.h

1.)添加:VolatileTexture::addDataTexture(CCTexture2D *tt,const void* data,CCTexture2DPixelFormat pixelFormat,unsigned int pixelsWide,unsigned int pixelsHigh,const CCSize& c             ontentSize)

让其增加数据备份功能:

void VolatileTexture::addDataTexture(CCTexture2D *tt,const void* data,CCTexture2DPixelFormat pixelFormat,unsigned int pixelsWide,unsigned int pixelsHigh,const CCSize& contentSize)

{

if (isReloading)

return;

VolatileTexture *vt = 0;

std::list::iterator i = textures.begin();

while( i != textures.end() )

{

VolatileTexture *v = *i++;

if (v->texture == tt) {

vt = v;

break;

}

}

if (!vt)

vt = new VolatileTexture(tt);

vt->m_eCashedImageType = kImageData;

vt->m_PixelFormat = pixelFormat;

vt->m_TextureSize = contentSize;

if(vt->m_pTextureData)

{

delete[] vt->m_pTextureData;

vt->m_pTextureData = 0;

}

switch(pixelFormat)

{

case kCCTexture2DPixelFormat_RGBA8888:

case kCCTexture2DPixelFormat_RGBA4444:

case kCCTexture2DPixelFormat_RGB5A1:

case kCCTexture2DPixelFormat_RGB565:

case kCCTexture2DPixelFormat_A8:

vt->m_pTextureData = new char[pixelsWide * pixelsHigh * 4];

memcpy(vt->m_pTextureData,data,pixelsWide * pixelsHigh * 4);

break;

case kCCTexture2DPixelFormat_RGB888:

vt->m_pTextureData = new char[pixelsWide * pixelsHigh * 3];

memccpy(vt->m_pTextureData,data,pixelsWide * pixelsHigh * 3);

break;

}

}

2.)CCTextureCache.cpp

VolatileTexture::~VolatileTexture()

{

//Ambition 添加 if(this->m_pTextureData)

{

delete [] this->m_pTextureData;

}

textures.remove(this);

}

2.修改:CCTexture2D.h

1.)cpp文件里 initWithData(const void *data, CCTexture2DPixelFormat pixelFormat, unsigned int pixelsWide, unsigned int pixelsHigh, const CCSize& contentSize)

//Ambition 添加 #if CC_ENABLE_CACHE_TEXTTURE_DATA

VolatileTexture::addDataTexture(this,data,pixelFormat,pixelsWide,pixelsHigh,contentSize);

#endif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cocos2d是一种流行的2D游戏引擎,它支持多平台开发,包括iOS、Android、Windows、Mac OS X等。Cocos2d-python是Cocos2d-x游戏引擎的Python版本,它提供了许多强大的功能,如游戏场景、动画、精灵、物理引擎等,非常适合开发2D游戏。 下面是一个简单的Cocos2d-python的helloworld程序: 1. 安装Cocos2d-python 在安装Cocos2d-python之前,需要先安装Python和pip。然后使用pip命令安装Cocos2d-python: ``` pip install cocos2d ``` 2. 创建一个新的Cocos2d-python项目 打开命令行窗口,进入到要创建项目的目录,然后执行以下命令: ``` cocos new mygame -p com.mycompany.mygame -l python ``` 其中,mygame是项目名称,com.mycompany.mygame是包名。 3. 编写helloworld程序 在mygame项目的src目录下创建一个新的Python文件helloworld.py,然后输入以下代码: ```python import cocos class HelloWorld(cocos.layer.Layer): def __init__(self): super(HelloWorld, self).__init__() label = cocos.text.Label( 'Hello, world!', font_name='Times New Roman', font_size=32, anchor_x='center', anchor_y='center' ) label.position = 320, 240 self.add(label) if __name__ == '__main__': cocos.director.director.init() HelloWorldScene = cocos.scene.Scene(HelloWorld()) cocos.director.director.run(HelloWorldScene) ``` 这个程序创建了一个名为HelloWorld的Layer,该Layer包含一个居中显示的文本标签“Hello, world!”。最后,它创建了一个Scene,将HelloWorld添加到Scene中,并运行Scene。 4. 运行helloworld程序 在命令行窗口中进入mygame项目的根目录,然后执行以下命令: ``` python src/helloworld.py ``` 程序将会启动,并显示一个居中显示的“Hello, world!”文本标签。 这是一个简单的Cocos2d-python的helloworld程序,你可以在此基础上进一步学习Cocos2d-python的开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值