@loaders.gl/textures
Version:
Framework-independent loaders for compressed and super compressed (basis) textures
29 lines (26 loc) • 854 B
text/typescript
// loaders.gl
// SPDX-License-Identifier: MIT
// Copyright (c) vis.gl contributors
import type {TextureLevel} from '@loaders.gl/schema';
import {isKTX, parseKTX} from './parse-ktx';
import {isDDS, parseDDS} from './parse-dds';
import {isPVR, parsePVR} from './parse-pvr';
/**
* Deduces format and parses compressed texture loaded in ArrayBuffer
* @param data - binary data of compressed texture
* @returns Array of the texture levels
*/
export function parseCompressedTexture(data: ArrayBuffer): TextureLevel[] {
if (isKTX(data)) {
// TODO: remove @ts-ignore when `parseKTX` output is normalized to loaders.gl texture format
// @ts-ignore
return parseKTX(data);
}
if (isDDS(data)) {
return parseDDS(data);
}
if (isPVR(data)) {
return parsePVR(data);
}
throw new Error('Texture container format not recognized');
}