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

标签 iphone cocos2d-x libpng

我刚刚开始在 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

最佳答案

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

将 PNG 文件压缩为 NO 和

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

enter image description here

关于iphone - 在 iPhone 上加载 PNG 图像失败,但在模拟器中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30465296/

相关文章:

c++ - cocos2d-x 3.2 中从左向右移动进度条

Qt Creator 5 链接

python-2.7 - python opencv2 中的 libpng 警告

iphone - 如何绘制圆角矩形标签或 View ?

ios - 纵向模式下的动画 UIView 在 ios 上的横向模式下不一致

c++ - 动画管理器设计模式?

android - Eclipse & Cocos2d-x : My First Project, 我更改了 HelloWorldScene.cpp,但部署的游戏中没有发生更改?

c++ - libpng 输出不是预期的输出

objective-c - #if 检查(预处理器宏)以区分 iPhone 和 iPad

ios - 有没有办法将 iPhone App 限制为仅限某些型号?