我刚刚开始在 iPhone 上测试我的项目,在启动开始时加载 png 图像时遇到了问题。基本上图像不会被读取 - 它存在,并且被发现,但无法处理,因此返回 NULL 纹理。我使用的是Cocos2DX v3.4
我追踪到了 CCImage.cpp:
png_read_info(png_ptr,info_ptr);//第 956 行 -- 在 Debug模式下我无法通过这一点,执行立即转出 -- 我怀疑此函数内部抛出了异常
这是在这个方法中:bool Image::initWithPngData(const unsigned char * data, ssize_t dataLen)//line 916
在网络上搜索这可能是由于 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:未处理的关键 block
最佳答案
关于iphone - 在 iPhone 上加载 PNG 图像失败,但在模拟器中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30465296/