在iPhone上加载PNG图像失败,在模拟器中工作

在iPhone上加载PNG图像失败,在模拟器中工作,iphone,cocos2d-x,libpng,Iphone,Cocos2d X,Libpng,我刚开始在iPhone上测试我的项目,在发布之初加载png图像时遇到了一个问题。基本上,图像不被读取-它存在,并且被找到,但无法处理,因此返回空纹理。我正在使用cocos2dxv3.4 我追溯到CCImage.cpp: png_read_info(png_ptr,info_ptr);//第956行——在调试模式下,我无法通过这一点,执行立即转移出去——我怀疑此函数内部引发了异常 这在这个方法中:bool Image::initWithPngData(const unsigned char*dat

我刚开始在iPhone上测试我的项目,在发布之初加载png图像时遇到了一个问题。基本上,图像不被读取-它存在,并且被找到,但无法处理,因此返回空纹理。我正在使用cocos2dxv3.4

我追溯到CCImage.cpp:

png_read_info(png_ptr,info_ptr);//第956行——在调试模式下,我无法通过这一点,执行立即转移出去——我怀疑此函数内部引发了异常

这在这个方法中:bool Image::initWithPngData(const unsigned char*data,ssize_t dataLen)//第916行

在web上搜索这可能是由于libpng库中的某些不一致性造成的,可能是由于64位体系结构,尽管我对此表示怀疑,否则链接器会抱怨。我用arm64编译

我相信这不是图像的问题,因为一切都在模拟器中工作,当我在设备上使用其他图像时,我也会遇到同样的问题

有什么想法吗

[编辑]

以下是我发现的其他信息:

1替换jpg文件并将其加载到works中

2正确加载了cc_fps_images_png文件,但其数据包含在可执行文件中(即静态字节数组),而不是从磁盘读取

3我在iPhone 6 iOS 8.1上运行这个。以下是应用程序启动时控制台中显示的统计信息:

{
gl.supports_vertex_array_object: true
cocos2d.x.version: cocos2d-x 3.4
gl.vendor: Apple Inc.
gl.supports_PVRTC: true
gl.renderer: Apple A8 GPU
cocos2d.x.compiled_with_profiler: false
gl.max_texture_size: 4096
gl.supports_ETC1: false
gl.supports_BGRA8888: false
cocos2d.x.build_type: DEBUG
gl.supports_discard_framebuffer: true
gl.supports_NPOT: true
gl.supports_ATITC: false
gl.max_samples_allowed: 4
gl.max_texture_units: 8
cocos2d.x.compiled_with_gl_state_cache: true
gl.supports_S3TC: false
gl.version: OpenGL ES 2.0 Apple A8 GPU - 50.6.10
}
[编辑]

更多信息:


1我之前没有注意到这一点,但在输出中,我收到了以下错误消息:libpng错误:CgBI:未处理的关键块

在XCode中转到生成设置并将设置“压缩PNG文件”设置为否。

在XCode项目中打开“生成设置”并设置

将PNG文件压缩为否和

从PNG文件中删除文本元数据至否


无论压缩是打开还是关闭,我都能得到这个结果。另外,“从PNG文件中删除文本元数据”选项在XCode 8.0中似乎不可用

相反,我必须在右键单击->显示文件检查器下将png图像的“类型”更改为“数据”