在iPhone上加载PNG图像失败,可在模拟器

时间:2015-05-26 17:39:14

标签: iphone cocos2d-x libpng

我刚刚开始在iPhone上测试我的项目,并且在启动开始时加载png图像时遇到了问题。基本上没有读取图像 - 它存在,并且找到它,但是无法处理,因此返回NULL纹理。我正在使用Cocos2DX v3.4

我追溯到CCImage.cpp:

png_read_info(png_ptr,info_ptr); //第956行 - 我无法在调试模式下超过这一点,执行立即转出 - 我怀疑这个函数内部抛出异常

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

在网上搜索这可能是因为libpng库中的一些不一致可能是由于64位架构造成的,虽然我对此表示怀疑 - 否则链接器会抱怨。我用arm64编译。

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

有什么想法吗?

[编辑]

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

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

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:未处理的关键块

3 个答案:

答案 0 :(得分:4)

在XCode项目中打开“构建设置”并设置

压缩PNG文件为NO和

从PNG文件中删除文本元数据为NO。

enter image description here

答案 1 :(得分:0)

在XCode中转到构建设置并设置'压缩PNG文件'没有。

答案 2 :(得分:0)

无论压缩是打开还是关闭,我都知道了。此外,“从PNG文件中删除文本元数据”选项似乎在XCode 8.0中不可用。

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