问题:
非压缩纹理,可以使用cc.director.root?.device.copyTextureToBuffers(gfxTexture, [buffer], [region]); 读取到像素;
但是启用了 astc压缩纹理后,这样读出来的 buff都是0。请问该怎样读取像素呢?
需求:读取像素 判断是否透明
问题:
非压缩纹理,可以使用cc.director.root?.device.copyTextureToBuffers(gfxTexture, [buffer], [region]); 读取到像素;
但是启用了 astc压缩纹理后,这样读出来的 buff都是0。请问该怎样读取像素呢?
需求:读取像素 判断是否透明
要解码,不太好弄。
可以试试:
1、不采用 astc;
2、先渲染到缓存纹理,再从其中拿。
方法2,会有异步,可能不是很理想
之前egret引擎,有个 hitTestPoint(x, y, shapeFlag) 第3个参数 shapeFlag就是检查像素,在astc下也是有效的。
cocos下感觉应该可以实现
可以用 astc-codec 去 ```
ASTCDecompressToRGBA
不是用工具,要运行时判断
转RenderTexture再读
不错,该方法成功
刚发现,在真机(3.8.7)环境下会崩溃
拿不了,压缩纹理不走cpu
那有什么方法来判断透明吗?不到点击触发区域不对了
你要解决点击问题?那没必要这么绕
是的,透明区域不要触发点击
用物理的点画出来区域
不好意思没太懂,能麻烦说详细一些吗?
PolygonCollider