@spatialwalk/avatarkit
Version:
SPAvatar SDK - 3D Gaussian Splatting Avatar Rendering SDK
66 lines • 1.96 kB
TypeScript
import { I3DGSRenderer } from '../renderer';
export declare class WebGLRenderer implements I3DGSRenderer {
private canvas;
private backgroundColor;
private gl;
private shaderProgram;
private uniformLocations;
private attributeLocations;
private splatBuffer;
private quadVertexBuffer;
private vertexArray;
private splatCount;
private isInitialized;
private splatBufferSize;
constructor(canvas: HTMLCanvasElement, backgroundColor?: [number, number, number, number]);
/**
* 初始化 WebGL 渲染器
*/
initialize(): Promise<void>;
/**
* 设置着色器位置
*/
private setupShaderLocations;
/**
* 设置 WebGL 渲染状态
*/
private setupWebGLState;
/**
* 创建渲染缓冲区
*/
private createBuffers;
/**
* 创建四边形顶点缓冲区(实例化渲染用)
*/
private createQuadVertexBuffer;
/**
* 从已打包数据加载(零拷贝,GPU 优化路径)
* 🚀 性能优化版本:直接使用 WASM 输出的 packed 数据
* 🚀 Buffer 复用:避免每帧重新分配,使用 bufferSubData 更新
* @param packedData Float32Array [pos3, color4, cov6] x N 个点
* @param pointCount 点数
* @param _sortOrder WebGL 忽略此参数(已在 RenderSystem 中重排序)
*/
loadSplatsFromPackedData(packedData: Float32Array, pointCount: number, _sortOrder?: Uint32Array): void;
/**
* 上传数据到 GPU
*/
private uploadToGPU;
/**
* 设置实例化渲染顶点属性
*/
private setupVertexAttributes;
/**
* 渲染一帧
*/
render(viewMatrix: Float32Array, projectionMatrix: Float32Array, screenSize: [number, number]): void;
/**
* 创建着色器程序
*/
private createShaderProgram;
/**
* 清理资源
*/
dispose(): void;
}
//# sourceMappingURL=webglRenderer.d.ts.map