@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 1.32 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{disposeMaybe as e}from"../../../../../../core/maybe.js";import{TextureSamplingMode as t,PixelFormat as r,TextureWrapMode as s}from"../../../../../webgl/enums.js";import{Texture as i}from"../../../../../webgl/Texture.js";import{TextureDescriptor as o}from"../../../../../webgl/TextureDescriptor.js";class l{constructor(){this._size=[0,0],this._layerFBOTexture=null}dispose(){this._layerFBOTexture=e(this._layerFBOTexture)}draw(e,r,s){const{width:i,height:o}=r;this._createOrResizeResources(e,i,o);const{context:l,painter:a}=e,{amount:n}=s,h=l.gl,u=this._layerFBOTexture;l.bindFramebuffer(r),r.copyToTexture(0,0,i,o,0,0,u),l.setBlendingEnabled(!0),l.setStencilTestEnabled(!1),l.setDepthTestEnabled(!1),l.setClearColor(0,0,0,0),l.clear(h.COLOR_BUFFER_BIT),a.blitTexture(l,u,t.NEAREST,n)}_createOrResizeResources(e,l,a){const{context:n}=e;if(!this._layerFBOTexture||this._size[0]!==l||this._size[1]!==a)if(this._size[0]=l,this._size[1]=a,this._layerFBOTexture)this._layerFBOTexture.resize(l,a);else{const e=new o;e.internalFormat=r.RGBA,e.wrapMode=s.CLAMP_TO_EDGE,e.samplingMode=t.NEAREST,e.width=l,e.height=a,this._layerFBOTexture=new i(n,e)}}}export{l as Opacity};