dispose() {
        // delete buffers
        // each time we check for existing properties to avoid errors
        if(this._vao) {
            if(this.renderer._isWebGL2) {
                this.gl.deleteVertexArray(this._vao);
            }
            else {
                this.renderer.extensions['OES_vertex_array_object'].deleteVertexArrayOES(this._vao);
            }
        }

        for(const key in this.attributes) {
            if(!this.attributes[key].isActive) return;

            this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.attributes[key].buffer);
            this.gl.bufferData(this.gl.ARRAY_BUFFER, 1, this.gl.STATIC_DRAW);
            this.gl.deleteBuffer(this.attributes[key].buffer);
        }

        this.attributes = null;

        // update current buffers ID
        this.renderer.state.currentGeometryID = null;
    }
Dispose a geometry (ie delete its vertex array objects and buffers)
*