initializeBuffers() {
        if(!this.attributes) return;

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

            // bind attribute buffer
            this.gl.enableVertexAttribArray(this.attributes[key].location);

            this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.attributes[key].buffer);
            this.gl.bufferData(this.gl.ARRAY_BUFFER, new Float32Array(this.attributes[key].array), this.gl.STATIC_DRAW);

            // set where the attribute gets its data
            this.gl.vertexAttribPointer(this.attributes[key].location, this.attributes[key].size, this.gl.FLOAT, false, 0, 0);
        }

        // update current buffers ID
        this.renderer.state.currentGeometryID = this.definition.id;
    }
This method enables and binds our attributes buffers
*