import glCore from '../../../libs/gl-core';
import { WebGLRenderer } from '../../core';
import * as loaders from '../../loaders';
import CompressedTextureManager from './CompressedTextureManager';
import extensionChooser from './extensionChooser';
import GLTextureMixin from './GLTextureMixin';
import BASISLoader from './loaders/BASISLoader';
import WorkedBASISLoader from './loaders/WorkedBASISLoader';
Object.assign(glCore.GLTexture.prototype, GLTextureMixin);
WebGLRenderer.registerPlugin('compressedTextureManager', CompressedTextureManager);
loaders.Loader.addTinyMiddleware(extensionChooser.fixer);
loaders.Loader.addTinyPreMiddleware(extensionChooser.parse);
/**
* @namespace Tiny.plugins.compressedTexture
* @version 1.3.0
*
* @example
* // 首先对压缩纹理插件进行初始化
* var app = new Tiny.Application({...});
* Tiny.plugins.compressedTexture.init(app.renderer);
*
* // 然后在加载器中进行配置
* loader.add('./resources/tileset.json', {
* metadata: { useCompressedTexture: true }
* });
*/
export const compressedTexture = {
/**
* @param {Tiny.WebGLRenderer} renderer - 渲染对象
* @memberof Tiny.plugins.compressedTexture
*/
init: (renderer) => {
extensionChooser.detect(renderer);
},
/**
* @memberof Tiny.plugins.compressedTexture
* @return {array} - 如 [.pvr]、[.astc]
*/
supportedExtensions: () => {
return extensionChooser.extensions;
},
BASISLoader,
WorkedBASISLoader,
};