@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 2.14 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.32/esri/copyright.txt for details.
*/
import{fromValues as e}from"../../../../../core/libs/gl-matrix-2/factories/vec4f32.js";import{Pos2b as r}from"../DefaultVertexAttributeLayouts.js";import t from"./WGLBrush.js";import{background as i}from"../shaders/BackgroundPrograms.js";import{BufferObject as s}from"../../../../webgl/BufferObject.js";import{StencilOperation as o,Face as a,CompareFunction as l,PrimitiveType as n,Usage as d}from"../../../../webgl/enums.js";import{createProgram as m}from"../../../../webgl/ProgramTemplate.js";import{VertexArrayObject as c}from"../../../../webgl/VertexArrayObject.js";class _ extends t{constructor(){super(...arguments),this._color=e(1,0,0,1),this._initialized=!1}dispose(){this._solidProgram&&(this._solidProgram.dispose(),this._solidProgram=null),this._solidVertexArrayObject&&(this._solidVertexArrayObject.dispose(),this._solidVertexArrayObject=null)}prepareState({context:e}){e.setDepthWriteEnabled(!1),e.setDepthTestEnabled(!1),e.setStencilTestEnabled(!0),e.setBlendingEnabled(!1),e.setColorMask(!1,!1,!1,!1),e.setStencilOp(o.KEEP,o.KEEP,o.REPLACE),e.setStencilWriteMask(255)}draw(e,r){const{context:t,requestRender:i,allowDelayedRender:s}=e;this._initialized||this._initialize(t),!s||null==i||this._solidProgram.compiled?(t.setStencilFunctionSeparate(a.FRONT_AND_BACK,l.GREATER,r.stencilRef,255),t.bindVAO(this._solidVertexArrayObject),t.useProgram(this._solidProgram),this._solidProgram.setUniformMatrix3fv("u_dvsMat3",r.transforms.displayViewScreenMat3),this._solidProgram.setUniform2fv("u_coord_range",[r.rangeX,r.rangeY]),this._solidProgram.setUniform1f("u_depth",0),this._solidProgram.setUniform4fv("u_color",this._color),t.drawArrays(n.TRIANGLE_STRIP,0,4),t.bindVAO()):i()}_initialize(e){if(this._initialized)return!0;const t=m(e,i);if(!t)return!1;const o=new Int8Array([0,0,1,0,0,1,1,1]),a=s.createVertex(e,d.STATIC_DRAW,o),l=new c(e,i.attributes,r,new Map([["geometry",a]]));return this._solidProgram=t,this._solidVertexArrayObject=l,this._initialized=!0,!0}}export{_ as default};