xl-pano
Version:
一个基于 Typescript 的,同时支持立方体和球体场景的轻量开源库。
51 lines (50 loc) • 1.6 kB
TypeScript
import { TextureSource, WebGLRenderingContextWithProgram } from "../types/index";
import BaseScene from "./interface/BaseScene";
import Pano from "./Pano";
import { SceneAngle } from "./interface/Scene";
export default class SphereScene extends BaseScene {
/**
* @static {number} sections 球体经纬被切分的份数
* */
static sections: number;
/**
* @static
* @return {{vertices, texs, indices}} 顶点坐标,纹理坐标,顶点索引
* */
static get verticeTexIndices(): {
vertices: Float32Array;
texs: Float32Array;
indices: Uint32Array;
};
/**
* 将每个面的纹理贴图赋值给每个面的 sampler
* @param {WebGLRenderingContextWithProgram} gl WebGL 上下文
* @param {TexImageSource} image 图像资源
* */
static initTexture(gl: WebGLRenderingContextWithProgram, image: TexImageSource): void;
/**
* @property {TextureSource} textures 2:1球体纹理图
* */
textures: TextureSource;
/**
* @constructor 构造函数
* @param {string} texture 宽高比2:1的纹理图片
* @param {SceneAngle} defaultAngle 默认展示角度
* */
constructor(texture: TextureSource, defaultAngle?: SceneAngle);
/**
* 渲染球体
* */
drawModel(): void;
/**
* 加载纹理贴图
* @return {Promise<TexImageSource>} 图像资源
* */
private loadTextures;
replaceTextures(texture: TextureSource): void;
/**
* 渲染到 pano
* @param {Pano} pano 父容器
* */
render(pano: Pano): void;
}