我知道目前还没有完全得到官方支持,但我正在尝试使用开源项目ATF-Encoder生成 ATF 纹理。然后,我尝试将其上传到 Stage3D 纹理uploadCompressedTextureFromByteArray
,它本身自 FP11 以来就受支持。
这在纹理正确上传和显示的意义上是有效的。我还可以验证生成的纹理上是否存在压缩伪影,特别是如果我在编码期间增加量化因子,并且生成的 ByteArray 比“原始”纹理小得多(大约小 20 倍)。
但是,使用 Process Explorer 测量 GPU 使用率时,我仍然在每个纹理消耗完全相同数量的 VRAM(即每个像素 5.333 字节),而不是预期的小得多的值。
纹理是使用 BGRA 模式而不是压缩模式创建的 - 如果我尝试压缩,它会在尝试上传时给我“不兼容的格式”。据我所知,ATF 格式支持“压缩模式”纹理,但 ATF 编码器不输出带有该标志集的纹理?(我尝试在压缩完成后强制打开标志,不出所料,这只会使 Flash 崩溃)
有没有人有关于这个问题的更多信息?编码正确的 ATF 并使用 Compressed 标志上传可以解决问题吗?或者这是一个实现错误,它接受压缩的有效负载,但在上传时解压缩?这里的任何信息都是有价值的,真的。
这是在硬件模式下,在 AMD Radeon 6450、Windows 7 64 位、Flash Player 11.3 上(同样的事情发生在 11.4 beta 中)。