UNPKG

@arcgis/core

Version:

ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API

6 lines (5 loc) 1.12 kB
/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.32/esri/copyright.txt for details. */ import{disposeMaybe as t}from"../../core/maybe.js";import{BufferObject as i}from"./BufferObject.js";import{Usage as e}from"./enums.js";import{UniformBufferLayout as s}from"./UniformBufferLayout.js";class r{constructor(t,i,r=e.DYNAMIC_DRAW){this._context=t,this._usage=r,this._dirtyRange={from:1/0,to:-1},this._initialized=!1,this._data=new s(i)}get byteLength(){return this._data.byteLength}initialize(){this._initialized||(this.buffer=i.createUniform(this._context,this._usage,this._data.array),this._resetDirtyRange(),this._initialized=!0)}dispose(){this._context.unbindUBO(this),this.buffer=t(this.buffer)}set(t){this._data.setValues(t,this._dirtyRange)}setUniform(t,i){this._data.setValue(t,i,this._dirtyRange)}upload(){this.initialize();const{from:t,to:i}=this._dirtyRange;i>-1&&t<i&&(this.buffer.setSubData(this._data.arrayView32,t,t,i),this._resetDirtyRange())}_resetDirtyRange(){this._dirtyRange.from=1/0,this._dirtyRange.to=-1}}export{r as UniformBufferObject};