import { TextureSource, WebGLRenderingContextWithProgram } from "../types/index";
import Pano from "./Pano";
import BaseScene from "./interface/BaseScene";
import { SceneAngle } from "./interface/Scene";
/**
 * 每个面的编号 0-f 1-r 2-u 3-l 4-d 5-b
 * */
declare type Unit = 0 | 1 | 2 | 3 | 4 | 5;
/**
 * 场景类，提供全景画面
 * 立方体
 *    v6----- v5
 *   /|      /|
 *  v1------v0|
 *  | |     | |
 *  | |v7---|-|v4
 *  |/      |/
 *  v2------v3
 * */
export default class CubeScene extends BaseScene {
    /**
     * @static {Float32Array} vertices 立方体顶点坐标
     * */
    static vertices: Float32Array;
    /**
     * @static {Float32Array} texs 顶点对应的纹理坐标
     * */
    static texs: Float32Array;
    /**
     * @static {Uint8Array[]} allFacesIndices 六个面的顶点索引数组
     * */
    static allFacesIndices: Uint8Array[];
    /**
     * @static {WebGLUniformLocation} u_Face 的地址
     * 第一次渲染的时候被赋值
     * */
    static u_Face?: WebGLUniformLocation;
    /**
     * 将每个面的纹理贴图赋值给每个面的 sampler
     * @param {WebGLRenderingContextWithProgram} gl WebGL 上下文
     * @param {TexImageSource} image 图像资源
     * @param {number} unit 每个面的编号 0-f 1-r 2-u 3-l 4-d 5-b
     * */
    static initTexture(gl: WebGLRenderingContextWithProgram, image: TexImageSource, unit: Unit): void;
    /**
     * 获取 u_Face 缓存
     * @param {WebGLRenderingContextWithProgram} gl WebGL 上下文
     * @return {WebGLUniformLocation} u_Face 地址
     * */
    static getUFaceLocation(gl: WebGLRenderingContextWithProgram): WebGLUniformLocation;
    /**
     * @property {TextureSource[]} textures 六个面的纹理图片，按照 f r u l d b 的顺序
     * */
    textures: TextureSource[];
    /**
     * @constructor 构造函数
     * @param {string[]} textures 六个面的纹理图片，按照 f r u l d b 的顺序
     * @param {SceneAngle} defaultAngle 默认展示角度
     * */
    constructor(textures: TextureSource[], defaultAngle?: SceneAngle);
    /**
     * 渲染立方体
     * */
    drawModel(): void;
    /**
     * 加载纹理贴图
     * @return {Promise<TexImageSource[]>} 图像资源
     * */
    private loadTextures;
    /**
     * 渲染立方体的其中一面
     * @param {Uint8Array} indices 该面的顶点索引
     * @param {Unit} unit 每个面的编号
     * */
    private renderFace;
    /**
     * 更改纹理重新渲染
     * @param {TextureSource[]} textures 纹理资源集合，按照 f r u l d b 的顺序
     * */
    replaceTextures(textures: TextureSource[]): void;
    /**
     * 渲染到 pano
     * @param {Pano} pano 父容器
     * */
    render(pano: Pano): void;
}
export {};
