使用Java在android中加载DXT纹理文件
我正在寻找加载压缩jpg和png文件在android。加载原始文件太慢了。计划是提前将文件压缩为DXT文件。我尝试使用DXTViewer压缩一些图像,并尝试将它们作为纹理加载 当前,我从GL.glcompressedEximage2D(…)获取一个GL\u无效\u枚举 这是代码 就像我说的,这会触发一个GL_INVALID_ENUM 似乎很少有关于这个主题的文档或示例使用Java在android中加载DXT纹理文件,java,android,Java,Android,我正在寻找加载压缩jpg和png文件在android。加载原始文件太慢了。计划是提前将文件压缩为DXT文件。我尝试使用DXTViewer压缩一些图像,并尝试将它们作为纹理加载 当前,我从GL.glcompressedEximage2D(…)获取一个GL\u无效\u枚举 这是代码 就像我说的,这会触发一个GL_INVALID_ENUM 似乎很少有关于这个主题的文档或示例 提前感谢。不必详细说明(因为这将编写一个可能在某处的库…),至少您需要解析文件中的DDS头,确定格式,并使用正确的格式代码进
提前感谢。不必详细说明(因为这将编写一个可能在某处的库…),至少您需要解析文件中的DDS头,确定格式,并使用正确的格式代码进行上传。因此,如果您检测到DXT1,您的上载应该如下所示:
gl.glCompressedTexImage2D(GL10.GL_TEXTURE_2D, 0, 0x83F1, 512, 512,
0, (int) this.total, bb);
DXT格式不是GLES1规范的一部分,因此您需要使用十六进制代码,或者为它们设置一些常量。我使用了上面的DXT1格式代码。我猜使用RGBA会产生无效的枚举错误
另外请注意,如果您的代码希望支持加载mipmap、cubemap,则需要在解析、加载和上载过程中进一步努力
最后,您应该通过在GL extensions字符串中查找s3tc扩展来确保设备具有s3tc/DXT支持
-d
gl.glCompressedTexImage2D(GL10.GL_TEXTURE_2D, 0, 0x83F1, 512, 512,
0, (int) this.total, bb);