【发布时间】:2018-05-15 02:51:32
【问题描述】:
我正在阅读 openGL ES 2.0 指南,我偶然发现了 GenerateMipmap(target) 命令的这条注释:
如果零级数组以压缩的内部格式存储,则会生成错误 INVALID_OPERATION。
我理解的方式是,在 openGL ES 2.0 中没有为压缩纹理自动生成 mipmap 的功能——我所看到的其他一切似乎都表明这一点,尽管我从未在任何地方看到它具体确认.我已经看到 Mali 纹理压缩工具可以自动生成 mipmap——但这只适用于 Windows、Linux 和 OS X——而不适用于 Android。我需要我的应用程序来压缩纹理并将它们mipmap(这个想法是用户可以拍摄图像并将其作为纹理应用 - 我已经处理了纹理必须具有宽度和高度为 2 ^n 和 2^m 分别)。 ETC1Util 负责压缩纹理(尽管它只负责 ETC1 格式,我仍在寻找具有 alpha 通道的纹理的解决方案 - 但如果 Google 没有帮助,那将是另一天的不同问题我在那里)。
我的问题是:如何在 Android 上运行时压缩和 mipmap 纹理 - 最重要的是 ETC1,但理想情况下还有 PVRTC、ATITC、S3TC 和 ETC2?
【问题讨论】:
-
使用
glTexImage2D,可以上传特定MIP-map级别的图像数据。但我怀疑,您的问题更多是关于如何以压缩格式为更高的 MIP 贴图级别创建更小的纹理? -
是的,没错。
标签: android opengl-es textures mipmaps