- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我知道目前这还没有完全得到官方支持,但我正在尝试使用开源项目生成 ATF 纹理 ATF-Encoder .然后我尝试使用 uploadCompressedTextureFromByteArray
将其上传到 Stage3D 纹理,它本身自 FP11 以来就受支持。
这在正确上传和显示纹理的意义上起作用。我还可以验证生成的纹理上是否存在压缩伪影,特别是如果我在编码期间增加量化因子,并且生成的 ByteArray 比“原始”纹理小得多(大约小 20 倍)。
但是,使用 Process Explorer 测量 GPU 使用情况时,我仍然为每个纹理消耗完全相同数量的 VRAM(即每个像素 5.333 字节),而不是预期的小得多的值。
纹理是使用 BGRA 模式创建的,而不是压缩模式 - 如果我尝试压缩,在尝试上传时它会给我“不兼容的格式”。据我所知,ATF 格式支持“压缩模式”纹理,但 ATF 编码器不输出带有该标志集的纹理? (我试过在压缩完成后强制打开标志,不出所料,这只会让 Flash 崩溃)
有人有关于这个问题的更多信息吗?编码正确的 ATF 并使用压缩标志上传是否可以解决问题?或者这是一个实现错误,它接受压缩的有效负载,但在上传时解压缩?这里的任何信息都很有值(value),真的。
这是在硬件模式下,在 AMD Radeon 6450、Windows 7 64 位、Flash Player 11.3 上(同样的事情发生在 11.4 beta 中)。
最佳答案
为了澄清 renaun 所说的,ATF 中有多种压缩类型:
block 压缩(PVRTC、DXT5 和 ETC1)是反射(reflect) GPU 内存节省的压缩类型。如果您不使用 block 压缩,您的纹理将作为 RGBA 上传,并使用与 PNG 一样多的 GPU 内存。
除此之外,无论您是否使用 block 压缩,JPEG XR 也可以应用于 ATF 文件。这将减少 ATF 的文件大小,但不会减少所需的 GPU 内存量。请注意,量化级别 0 是无损的,因此它不会引入更多的伪像,但使用 Adobe 的 png2atf 实用程序,您可以设置量化因子(压缩级别)。
底线:由于您引用的开源 ATF-Encoder 不支持 block 级压缩(引用缺乏开源压缩代码),因此它无法创建纹理减少 GPU 内存使用量。
此外,ATF 是一种容器格式。这意味着它可以保存图像的一种或多种编码( block 压缩类型)。您可以创建包含 PVRTC、ETC1 和/或 DXT5 的任意组合的 ATF 文件,具体取决于您希望 ATF 在哪些平台上运行。例如,您可以仅在打包 .ipa 文件时为 iOS 构建过程打包 .atf 文件,而在打包 .apk 文件时仅为 Android 打包。
IMO,最佳点是 block 压缩 + 无损 JPEG XR 压缩。这代表 GPU 内存节省 + 小文件大小。此命令(再次使用 Adobe 的 png2atf)是:
PVRTC(iOS):
png2atf -c p -r -i image.png -o image.atfETC1(安卓):
png2atf -c e -r -i image.png -o image.atfDXT5(桌面):
png2atf -c d -r -i image.png -o image.atf一个 .atf 文件中的所有 3 种格式:
png2atf -c -r -i image.png -o image.atf
另请注意, block 压缩会导致一些非常丑陋的伪像。我只会在您需要节省 GPU 内存时使用它。
更新 - 关于 Dave Walker 的评论 - 是的,PVRTexTool在创造高质量结果方面做得更好。它有一个 GUI 和一个命令行,您可以使用 GUI 自行探索所有选项,但我最喜欢的命令行选项(用于具有卡通 Sprite 的半透明 PNG 的顶级质量)是:
PVRTexToolCL -i image.png -o image.pvr -m -l -f PVRTC1_4 -q pvrtcbest -mfilter cubic
关于actionscript-3 - 在 Flash 11.3 中加载 ATF 纹理有效,但内存使用率较高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11652507/
我正在阅读 Dropbox 的 Async。来自 Dropbox 技术博客的任务框架及其架构:https://dropbox.tech/infrastructure/asynchronous-task
我知道目前这还没有完全得到官方支持,但我正在尝试使用开源项目生成 ATF 纹理 ATF-Encoder .然后我尝试使用 uploadCompressedTextureFromByteArray 将其
我是一名优秀的程序员,十分优秀!