我刚刚开始在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:未处理的关键块