@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.21 kB
JavaScript
import has from"../../../core/has.js";import{RenderTargetType as e}from"./interfaces.js";import{OverlayFramebufferObject as r}from"./OverlayFramebufferObject.js";import{ShaderOutput as t}from"../webgl-engine/core/shaderLibrary/ShaderOutput.js";class s{constructor(e,t,s,o=!0){this.output=t,this.type=s,this.valid=!1,this.lastUsed=1/0,this.fbo=new r(e,o)}}class o{constructor(r){this.renderTargets=[new s(r,t.Color,e.Color),new s(r,t.Color,e.ColorNoRasterImage),new s(r,t.Highlight,e.Highlight,!1),new s(r,t.Normal,e.Water),new s(r,t.Color,e.Occluded)],has("enable-feature:objectAndLayerId-rendering")&&this.renderTargets.push(new s(r,t.ObjectAndLayerIdColor,e.ObjectAndLayerIdColor))}getTarget(e){return this.renderTargets[e].fbo}dispose(){for(const e of this.renderTargets)e.fbo.dispose()}disposeRenderTargetMemory(){for(const e of this.renderTargets)e.fbo.disposeRenderTargetMemory()}validateUsageForTarget(e,r,t){if(e)r.lastUsed=t;else if(t-r.lastUsed>a)r.fbo.disposeRenderTargetMemory(),r.lastUsed=1/0;else if(r.lastUsed<1/0)return!0;return!1}get gpuMemoryUsage(){return this.renderTargets.reduce(((e,r)=>e+r.fbo.gpuMemoryUsage),0)}}const a=1e3;export{o as OverlayRenderTarget,s as RenderTargetDescriptor};