异步加载和解析指向 KTX 文件的给定 URL,或解析 KTX 文件的原始二进制数据。
加载完成后,将返回一个Promise,该Promise将解析为一个包含image buffer、宽度、高度和格式的对象;如果 URL 加载失败或数据解析失败,则返回拒绝。
数据是使用 XMLHttpRequest 加载的,这意味着要向其他来源发出请求,服务器必须启用跨来源资源共享(CORS)headers。
以下是 KTX 格式规范的一部分,但不受支持:
- Big-endian files
- Metadata
- 3D textures
- Texture Arrays
- Cubemaps
- Mipmaps
Name | Type | Description |
---|---|---|
urlOrBuffer |
String | ArrayBuffer | 二进制数据的 URL 或 ArrayBuffer。 |
headers |
Object | optional 与请求一起发送的 HTTP headers。 |
request |
Request | optional 请求对象。仅供内部使用。 |
Returns:
加载时将解析请求数据的Promise。如果 request.throttle 为 true 且请求的优先级不够高,则返回未定义。
Throws:
-
RuntimeError : 无效的 KTX 文件。
-
RuntimeError : 文件的字节序不对。
-
RuntimeError : glInternalFormat 格式无效。
-
RuntimeError : 当纹理被压缩时,glType 必须为 0。
-
RuntimeError : 压缩纹理的类型大小必须为 1。
-
RuntimeError : 当纹理被压缩时,glFormat 必须为 0。
-
RuntimeError : 不支持为压缩纹理生成 mipmap。
-
RuntimeError : 基本内部格式必须与未压缩纹理的格式相同。
-
RuntimeError : 不支持三维纹理。
-
RuntimeError : 不支持纹理数组。
-
RuntimeError : 不支持 Cubemaps。
Example:
// load a single URL asynchronously
SuperMap3D.loadKTX('some/url').then(function(ktxData) {
var width = ktxData.width;
var height = ktxData.height;
var format = ktxData.internalFormat;
var arrayBufferView = ktxData.bufferView;
// use the data to create a texture
}).otherwise(function(error) {
// an error occurred
});