Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java在android中加载DXT纹理文件_Java_Android - Fatal编程技术网

使用Java在android中加载DXT纹理文件

使用Java在android中加载DXT纹理文件,java,android,Java,Android,我正在寻找加载压缩jpg和png文件在android。加载原始文件太慢了。计划是提前将文件压缩为DXT文件。我尝试使用DXTViewer压缩一些图像,并尝试将它们作为纹理加载 当前,我从GL.glcompressedEximage2D(…)获取一个GL\u无效\u枚举 这是代码 就像我说的,这会触发一个GL_INVALID_ENUM 似乎很少有关于这个主题的文档或示例 提前感谢。不必详细说明(因为这将编写一个可能在某处的库…),至少您需要解析文件中的DDS头,确定格式,并使用正确的格式代码进

我正在寻找加载压缩jpg和png文件在android。加载原始文件太慢了。计划是提前将文件压缩为DXT文件。我尝试使用DXTViewer压缩一些图像,并尝试将它们作为纹理加载

当前,我从GL.glcompressedEximage2D(…)获取一个GL\u无效\u枚举

这是代码

就像我说的,这会触发一个GL_INVALID_ENUM

似乎很少有关于这个主题的文档或示例


提前感谢。

不必详细说明(因为这将编写一个可能在某处的库…),至少您需要解析文件中的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);