现在cocos2d-x 3.13支持etc1的alpha了 那么游戏中到底该用什么格式的图片呢

如果ios用pvr.ccz然后安卓用etc1(pkm)的,可以吗?推荐吗?

建议还是用最普通的 png 吧 如果内存不是吃得很紧的话

嗯,不是所有的Android设备都支持ETC1。这个看你怎么选择。

早几年你这么说还行,那时候确实有厂商的驱动做的有问题。。。现在不可能不支持,GLES2.0必需支持ETC1

可以有选择地用,色彩丰富, 表现要求高的用png, 色彩简单的可以用etc1, ETC1 的确是GLES标准纹理格式

ETC1不是GLES2.0的标准,android的设备那么多,无法保证。标准的东西支持得都可能出现问题,何况是非标准的。

@minggo 好像是吧? https://en.wikipedia.org/wiki/Ericsson_Texture_Compression

请问官方有没工具提供,把现有的png资源导出成cocos那种alpha分离的文件格式?@minggo

no,你错了,ETC1百分之百是es2.0的标准,设备再多也可以保证。

2d游戏也许还有理由使用无损压缩的贴图,3d游戏不可能不使用ETC,PVR,ASTC,用png/jpg就是业余,傻逼。

我敢保证你都没看过市面上其他游戏使用的贴图格式,只以为这世界就是cocos和unity了,闭门造车。就是unity你也了解太少。

今天心情不好,就是想喷你下。

2赞

哎呦卧槽,你这最后一句我就看不下去了。心情不好就喷引擎组的人?老子今天也心情不好呢,就想喷你。臭SB

2赞

呵呵,可以可以

1赞

我现在比较关心的是,如果某个设备不支持etc1,那么会导致图片无法显示,
还是说仅仅是变成了cpu渲染,点内存大一些。

如果不支持会进行软件解码

@joshua_astray 是我错了,是标准之一。不过不是每个Android设备都GPU都支持这个压缩格式,如果不支持的话,引擎会软解码,这样的话就没有优势了。

引擎涉及的内容很多,我是还有很多需要学习的,cocos2d-x也是所有开发者一起努力完成的,也欢迎你往github提交代码一起把引擎做得更好。

不,所有支持gles2.0的安卓设备都支持ETC1

https://developer.android.com/training/multiple-apks/texture.html
Note that it’s generally a good idea for one of your APKs to support ETC1, as that texture format is supported by all Android-powered devices that support the OpenGL ES 2.0 spec.

http://developer.android.com/guide/topics/manifest/supports-gl-texture-element.html
Ericsson texture compression. Specified in OpenGL ES 2.0 and available in all Android-powered devices that support OpenGL ES 2.0.

1赞

那PNG也是软解码啊,用ETC能保证大多数能硬解码不就行了嘛~

我擦,讨论了这么久,就是cocos2d-x3.x里,到底怎么使用etc1+alpha呢?:joy:

看Texture2dTest.cpp的TextureETC1。

部分设备用了ETC1的格式会报:
04-11 19:31:07.740: E/IMGSRV(30016): :0: PVRSRVAllocDeviceMem: Error 3 returned
04-11 19:34:27.008: I/DEBUG(30513): backtrace:
04-11 19:34:27.009: I/DEBUG(30513): #00 pc 000077b8 /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.009: I/DEBUG(30513): #01 pc 0002c324 /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.009: I/DEBUG(30513): #02 pc 0002cea8 /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.009: I/DEBUG(30513): #03 pc 00004f3c /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.009: I/DEBUG(30513): #04 pc 0000562c /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.009: I/DEBUG(30513): #05 pc 0002d4ec /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.009: I/DEBUG(30513): #06 pc 0002d8a8 /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.009: I/DEBUG(30513): #07 pc 0002f1f4 /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.009: I/DEBUG(30513): #08 pc 00037580 /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.009: I/DEBUG(30513): #09 pc 0000f53c /system/vendor/lib/egl/libGLESv2_mtk.so (glDrawElements+432)
04-11 19:34:27.009: I/DEBUG(30513): #10 pc 00488463 /data/app-lib/com.dl2.dldl.A-1/libcocos2dlua.so (cocos2d::Renderer::drawBatchedQuads()+274)
04-11 19:34:27.009: I/DEBUG(30513): #11 pc 00488541 /data/app-lib/com.dl2.dldl.A-1/libcocos2dlua.so (cocos2d::Renderer::flushQuads()+12)
04-11 19:34:27.009: I/DEBUG(30513): #12 pc 00488571 /data/app-lib/com.dl2.dldl.A-1/libcocos2dlua.so (cocos2d::Renderer::flush2D()+4)
04-11 19:34:27.009: I/DEBUG(30513): #13 pc 00488581 /data/app-lib/com.dl2.dldl.A-1/libcocos2dlua.so (cocos2d::Renderer::flush()+4)
04-11 19:34:27.009: I/DEBUG(30513): #14 pc 00488775 /data/app-lib/com.dl2.dldl.A-1/libcocos2dlua.so (cocos2d::Renderer::processRenderCommand(cocos2d::RenderCommand*)+488)
04-11 19:34:27.009: I/DEBUG(30513): #15 pc 004888d1 /data/app-lib/com.dl2.dldl.A-1/libcocos2dlua.so (cocos2d::Renderer::visitRenderQueue(cocos2d::RenderQueue&)+216)
04-11 19:34:27.009: I/DEBUG(30513): #16 pc 004896eb /data/app-lib/com.dl2.dldl.A-1/libcocos2dlua.so (cocos2d::Renderer::render()+42)
04-11 19:34:27.009: I/DEBUG(30513): #17 pc 0044f6fb /data/app-lib/com.dl2.dldl.A-1/libcocos2dlua.so (cocos2d::Scene::render(cocos2d::Renderer*)+242)
04-11 19:34:27.009: I/DEBUG(30513): stack:
04-11 19:34:27.009: I/DEBUG(30513): 5f131870 00031c40
04-11 19:34:27.009: I/DEBUG(30513): 5f131874 00000000
04-11 19:34:27.009: I/DEBUG(30513): 5f131878 67c6d008
04-11 19:34:27.009: I/DEBUG(30513): 5f13187c 400a3b20 /system/lib/libc.so (dlmalloc+480)
04-11 19:34:27.009: I/DEBUG(30513): 5f131880 00000001
04-11 19:34:27.009: I/DEBUG(30513): 5f131884 00000005
04-11 19:34:27.009: I/DEBUG(30513): 5f131888 00000000
04-11 19:34:27.009: I/DEBUG(30513): 5f13188c 00000000
04-11 19:34:27.010: I/DEBUG(30513): 5f131890 00000000
04-11 19:34:27.010: I/DEBUG(30513): 5f131894 6995bc28
04-11 19:34:27.010: I/DEBUG(30513): 5f131898 00000000
04-11 19:34:27.010: I/DEBUG(30513): 5f13189c 67c6d210
04-11 19:34:27.010: I/DEBUG(30513): 5f1318a0 00000040
04-11 19:34:27.010: I/DEBUG(30513): 5f1318a4 67bf1000 /dev/pvrsrvkm
04-11 19:34:27.010: I/DEBUG(30513): 5f1318a8 df0027ad
04-11 19:34:27.010: I/DEBUG(30513): 5f1318ac 00000000
04-11 19:34:27.010: I/DEBUG(30513): #00 5f1318b0 00000006
04-11 19:34:27.010: I/DEBUG(30513): 5f1318b4 6a27fdc0
04-11 19:34:27.010: I/DEBUG(30513): 5f1318b8 6030069c /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.010: I/DEBUG(30513): 5f1318bc 6a284008
04-11 19:34:27.010: I/DEBUG(30513): 5f1318c0 00000104
04-11 19:34:27.010: I/DEBUG(30513): 5f1318c4 00000062
04-11 19:34:27.010: I/DEBUG(30513): 5f1318c8 00000000
04-11 19:34:27.010: I/DEBUG(30513): 5f1318cc 67c6d008
04-11 19:34:27.010: I/DEBUG(30513): 5f1318d0 00000000
04-11 19:34:27.010: I/DEBUG(30513): 5f1318d4 602d0328 /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.010: I/DEBUG(30513): #01 5f1318d8 00000041
04-11 19:34:27.010: I/DEBUG(30513): 5f1318dc 00000018
04-11 19:34:27.010: I/DEBUG(30513): 5f1318e0 00000041
04-11 19:34:27.010: I/DEBUG(30513): 5f1318e4 00000000
04-11 19:34:27.010: I/DEBUG(30513): 5f1318e8 00000009
04-11 19:34:27.010: I/DEBUG(30513): 5f1318ec 00000000
04-11 19:34:27.010: I/DEBUG(30513): 5f1318f0 00000000
04-11 19:34:27.010: I/DEBUG(30513): 5f1318f4 00001000
04-11 19:34:27.010: I/DEBUG(30513): 5f1318f8 00000000
04-11 19:34:27.010: I/DEBUG(30513): 5f1318fc 02014201
04-11 19:34:27.011: I/DEBUG(30513): 5f131900 00000000
04-11 19:34:27.011: I/DEBUG(30513): 5f131904 6a27fdc0
04-11 19:34:27.011: I/DEBUG(30513): 5f131908 6a284008
04-11 19:34:27.011: I/DEBUG(30513): 5f13190c 6a27fdc0
04-11 19:34:27.011: I/DEBUG(30513): 5f131910 6a284008
04-11 19:34:27.011: I/DEBUG(30513): 5f131914 00000000
04-11 19:34:27.011: I/DEBUG(30513): … …
04-11 19:34:27.011: I/DEBUG(30513): #02 5f131930 67c6d008
04-11 19:34:27.011: I/DEBUG(30513): 5f131934 6a27fdd0
04-11 19:34:27.011: I/DEBUG(30513): 5f131938 6a287770
04-11 19:34:27.011: I/DEBUG(30513): 5f13193c 6076c44c
04-11 19:34:27.011: I/DEBUG(30513): 5f131940 602d0e1c /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.011: I/DEBUG(30513): 5f131944 00000000
04-11 19:34:27.011: I/DEBUG(30513): 5f131948 60b242d0
04-11 19:34:27.011: I/DEBUG(30513): 5f13194c 6a27fdd0
04-11 19:34:27.011: I/DEBUG(30513): 5f131950 00000000
04-11 19:34:27.011: I/DEBUG(30513): 5f131954 6a172168
04-11 19:34:27.011: I/DEBUG(30513): 5f131958 00000001
04-11 19:34:27.011: I/DEBUG(30513): 5f13195c 602a8f40 /system/vendor/lib/egl/libGLESv2_mtk.so
04-11 19:34:27.015: I/DEBUG(30513): memory near r0:
04-11 19:34:27.015: I/DEBUG(30513): 00001fe0 ffffffff ffffffff ffffffff ffffffff …
04-11 19:34:27.015: I/DEBUG(30513): 00001ff0 ffffffff ffffffff ffffffff ffffffff …
04-11 19:34:27.015: I/DEBUG(30513): 00002000 ffffffff ffffffff ffffffff ffffffff …
04-11 19:34:27.015: I/DEBUG(30513): 00002010 ffffffff ffffffff ffffffff ffffffff …
04-11 19:34:27.015: I/DEBUG(30513): 00002020 ffffffff ffffffff ffffffff ffffffff …
04-11 19:34:27.015: I/DEBUG(30513): memory near r5:
04-11 19:34:27.015: I/DEBUG(30513): 67c6d1f0 00000002 ffffffff 00000002 ffffffff …
04-11 19:34:27.016: I/DEBUG(30513): 67c6d200 00000002 ffffffff 49386a03 477fa88c …j8I…G
04-11 19:34:27.016: I/DEBUG(30513): 67c6d210 42397203 c404c414 4f387103 33310002 .r9B…q8O…13
04-11 19:34:27.016: I/DEBUG(30513): 67c6d220 4f3f7702 00ff8300 40306802 50005000 .w?O…h0@.P.P
04-11 19:34:27.016: I/DEBUG(30513): 67c6d230 40306822 7d7a7d00 38286002 57590820 "h0@.}z}.(8 .YW 04-11 19:34:27.016: I/DEBUG(30513): memory near r7: 04-11 19:34:27.016: I/DEBUG(30513): 67bf0fe0 ffffffff ffffffff ffffffff ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): 67bf0ff0 ffffffff ffffffff ffffffff ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): 67bf1000 ffffffff ffffffff ffffffff ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): 67bf1010 ffffffff ffffffff ffffffff ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): 67bf1020 ffffffff ffffffff ffffffff ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): memory near r8: 04-11 19:34:27.016: I/DEBUG(30513): 67c6cfe8 ffffffff ffffffff ffffffff ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): 67c6cff8 ffffffff ffffffff 00000000 00031c4b ............K... 04-11 19:34:27.016: I/DEBUG(30513): 67c6d008 00000002 ffffffff 00000002 ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): 67c6d018 00000002 ffffffff 00000002 ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): 67c6d028 00000002 ffffffff 00000002 ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): memory near ip: 04-11 19:34:27.016: I/DEBUG(30513): 00000fe0 ffffffff ffffffff ffffffff ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): 00000ff0 ffffffff ffffffff ffffffff ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): 00001000 ffffffff ffffffff ffffffff ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): 00001010 ffffffff ffffffff ffffffff ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): 00001020 ffffffff ffffffff ffffffff ffffffff ................ 04-11 19:34:27.016: I/DEBUG(30513): memory near sp: 04-11 19:34:27.016: I/DEBUG(30513): 5f131890 00000000 6995bc28 00000000 67c6d210 ....(..i.......g 04-11 19:34:27.016: I/DEBUG(30513): 5f1318a0 00000040 67bf1000 df0027ad 00000000 @......g.'...... 04-11 19:34:27.016: I/DEBUG(30513): 5f1318b0 00000006 6a27fdc0 6030069c 6a284008 ......'j..0.@(j
04-11 19:34:27.016: I/DEBUG(30513): 5f1318c0 00000104 00000062 00000000 67c6d008 …b…g
04-11 19:34:27.016: I/DEBUG(30513): 5f1318d0 00000000 602d0328 00000041 00000018 …(.-A....... 04-11 19:34:27.016: I/DEBUG(30513): code around pc: 04-11 19:34:27.016: I/DEBUG(30513): 602ab798 ea000014 e1a00006 e1a03009 e1a01004 .........0...... 04-11 19:34:27.016: I/DEBUG(30513): 602ab7a8 e1a0200a ebfffc23 e2866001 e1a00080 . ..#....
04-11 19:34:27.017: I/DEBUG(30513): 602ab7b8 e7973100 e2800001 e5053008 e7973100 .1…0…1…
04-11 19:34:27.017: I/DEBUG(30513): 602ab7c8 e5053004 ea000001 e1a05008 e3a06000 .0…P….. 04-11 19:34:27.017: I/DEBUG(30513): 602ab7d8 e59d3028 e2855008 e1560003 1affffec (0...P....V..... 04-11 19:34:27.017: I/DEBUG(30513): code around lr: 04-11 19:34:27.017: I/DEBUG(30513): 602ab790 e3a04000 e1a0b18b ea000014 e1a00006 .@.............. 04-11 19:34:27.017: I/DEBUG(30513): 602ab7a0 e1a03009 e1a01004 e1a0200a ebfffc23 .0....... ..#... 04-11 19:34:27.017: I/DEBUG(30513): 602ab7b0 e2866001 e1a00080 e7973100 e2800001 .…1…
04-11 19:34:27.017: I/DEBUG(30513): 602ab7c0 e5053008 e7973100 e5053004 ea000001 .0…1…0…
04-11 19:34:27.017: I/DEBUG(30513): 602ab7d0 e1a05008 e3a06000 e59d3028 e2855008 .P…`…(0…P…
04-11 19:34:27.017: I/DEBUG(30513): memory map around fault addr 67bf9000:
04-11 19:34:27.017: I/DEBUG(30513): 67bf1000-67bf9000 /dev/pvrsrvkm
04-11 19:34:27.017: I/DEBUG(30513): (no map for address)
04-11 19:34:27.017: I/DEBUG(30513): 67c2c000-67c60000

我用的是pvr,czz是压缩的,对安卓不利。