opengl-es - ETC1 纹理的容器格式

标签 opengl-es opengl-es-2.0 textures

我正在寻找一种支持 mipmap、cubemap 和 3d 纹理的格式,以便在 OpenGL ES 2.0 游戏上使用。在 Windows 上,我使用 .dds 格式,因为它支持 DXT 压缩。对于移动程序,我认为有些 .pkm 文件不支持多种纹理,而 .pvr 文件我“认为”依赖于 PowerVR 平台。所以;

-我可以将 .dds 与 ETC1 压缩一起使用吗?是否存在阻止我在 Windows 以外的平台上使用 .dds 的许可问题?

-其他 GPU 供应商的产品(Adreno、Mali 等)是否支持 .pvr 文件? (不是 PVRTC,只是带有 ETC1 压缩的 .pvr)

-或者是否有其他文件格式可以满足我的需要?

最佳答案

是的,您可以将 DDS 用于 ETC1。只需发明您自己的 FOURCC 代码。据我所知,dds 没有专利。

没有 GPU 供应商支持 pvr 文件格式(包括 PoverVX)。 GPU 供应商只关心压缩纹理数据(PVRTC、ETC、DXTC),而不关心文件格式(png、jpeg、dds、pvr)。解析文件格式以提取纹理数据(压缩或未压缩)是用户/应用程序的责任。

您可以使用任何适合您需要的文件格式。发明你自己的。例如,像这样:

[4 bytes] - width
[4 bytes] - height
[4 bytes] - format id (1 - etc1, 2 - dxt, 3 - ... whatver)
[4 bytes] - count of images (mipmaps/cubemaps/whatever)
[bytes] - data

关于opengl-es - ETC1 纹理的容器格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9341608/

相关文章:

c++ - Cuda 从黑白图像创建纹理对象

android - 安卓截图

Android native GLES 2.0 空白屏幕与 MVP 矩阵

ios - AVCaptureVideoPreviewLayer 前置摄像头在传递给 opengl 着色器之前翻转(取消镜像)像素缓冲区

glsl - 顶点属性是否可以成为 GLSL-ES 2.0 中的数组?

javascript - Threejs 自定义着色器 - 屏幕撕裂

android - 切换到 OpenGL 会提高渲染速度吗?

objective-c - 获取屏幕上某种颜色占据的区域 - iOS

c - gles2 中的 Mipmap 出现空白

c++ - 通过 Shader DirectX 9 传递纹理