pixi-stats
Version:
WebGL stats for pixi.js or/and three.js
71 lines (54 loc) • 1.62 kB
text/typescript
/* eslint-disable @typescript-eslint/no-explicit-any */
import GLHook from './GLHook'
import TextureHook from './TextureHook'
export default class BaseHooks {
protected _drawCalls: number = -1
protected _maxDeltaDrawCalls: number = -1
protected glhook?: GLHook
protected texturehook?: TextureHook
constructor() {}
public attach(gl: any) {
this.glhook = new GLHook(gl)
this.texturehook = new TextureHook(gl)
}
public get drawCalls(): number {
if (this.glhook && this.glhook.isInit) {
return this.glhook.drawPasses
}
return -1
}
public get maxDeltaDrawCalls() {
return this._maxDeltaDrawCalls
}
public get deltaDrawCalls(): number {
if (this._drawCalls == -1) {
this._drawCalls = this.drawCalls
return 0
}
const dc: number = this.drawCalls
const delta: number = dc - this._drawCalls
this._drawCalls = dc
this._maxDeltaDrawCalls = Math.max(this._maxDeltaDrawCalls, delta)
return delta
}
public get maxTextureCount(): number {
if (this.texturehook && this.texturehook.isInit)
return this.texturehook.maxTexturesCount
return 0
}
public get texturesCount(): number {
if (this.texturehook && this.texturehook.isInit)
return this.texturehook.currentTextureCount
return 0
}
public reset(): void {
this._maxDeltaDrawCalls = -1
this._drawCalls = -1
if (this.glhook) this.glhook.reset()
if (this.texturehook) this.texturehook.reset()
}
public release(): void {
if (this.glhook) this.glhook.release()
if (this.texturehook) this.texturehook.release()
}
}