pixi-stats
Version:
WebGL stats for pixi.js or/and three.js
53 lines (40 loc) • 1.35 kB
text/typescript
import BaseHooks from './hooks/BaseHooks';
import { PIXIGlTextureRecord, PIXIRendererGlTexture, Renderer } from './model';
export class PIXIHooks extends BaseHooks {
get hooked() {
return !!this.glhook;
}
constructor(renderer: Renderer) {
super();
if (!renderer) {
console.warn('[PIXI Hooks] renderer in constructor undefined');
return;
}
if (!renderer.gl) {
console.warn('[PIXI Hooks] gl in renderer not found');
return;
}
this.attach(renderer.gl);
if (!this.texturehook) {
console.warn('[PIXI Hooks] attach hook to gl in renderer failed');
return;
}
const texture = renderer.texture as unknown as PIXIRendererGlTexture;
// pixi v6 compatibility
const glTextures = texture._glTextures || texture.managedTextures;
// pixi v6 compatibility
const glTexturesArray = Array.isArray(glTextures)
? glTextures
: Object.values(glTextures as PIXIGlTextureRecord);
if (!glTexturesArray) {
console.warn('[PIXI Hooks] no gl textures found');
return;
}
console.info('[PIXI Hooks] Collect used textures:', glTexturesArray.length);
glTexturesArray.forEach((glTexture) => {
if (glTexture.gl === renderer.gl && glTexture.texture) {
this.texturehook!.registerTexture(glTexture.texture);
}
});
}
}