@doegis/core
Version:
DOE GIS API
3 lines (1 loc) • 1.42 kB
JavaScript
import{isNone as r,isSome as e}from"../../../../../core/maybe.js";import{f as t}from"../../../../../chunks/vec4f32.js";import{createProgramDescriptor as s}from"../Utils.js";import o from"./WGLBrush.js";import{background as a}from"../shaders/BackgroundPrograms.js";import{StencilOperation as i,CompareFunction as m,PrimitiveType as n,DataType as p}from"../../../../webgl/enums.js";import{createProgram as l}from"../../../../webgl/ProgramTemplate.js";const c=()=>s("clip",{geometry:[{location:0,name:"a_pos",count:2,type:p.SHORT}]});class d extends o{constructor(){super(...arguments),this._color=t(0,1,0,1)}dispose(){this._program&&this._program.dispose()}prepareState({context:r}){r.setStencilTestEnabled(!0),r.setBlendingEnabled(!1),r.setFaceCullingEnabled(!1),r.setColorMask(!1,!1,!1,!1),r.setStencilOp(i.KEEP,i.KEEP,i.REPLACE),r.setStencilWriteMask(255),r.setStencilFunction(m.ALWAYS,0,255)}draw(t,s){const{context:o,state:i,requestRender:m,allowDelayedRender:d}=t,f=c(),g=s.getVAO(o,i,f.attributes,f.bufferLayouts);r(g.indexBuffer)||(this._program||(this._program=l(o,a)),d&&e(m)&&!this._program.compiled?m():(o.useProgram(this._program),this._program.setUniform2fv("u_coord_range",[1,1]),this._program.setUniform4fv("u_color",this._color),this._program.setUniformMatrix3fv("u_dvsMat3",i.displayMat3),o.bindVAO(g),o.drawElements(n.TRIANGLES,g.indexBuffer.size,p.UNSIGNED_INT,0),o.bindVAO()))}}export{d as default};