initAttributes() {
        // loop through our attributes and create buffers and attributes locations
        for(const key in this.attributes) {
            // is this attribute active in our program?
            this.attributes[key].isActive = this.program.activeAttributes.includes(this.attributes[key].name);

            // if attribute is not active, no need to go further
            if(!this.attributes[key].isActive) {
                return;
            }

            this.attributes[key].location = this.gl.getAttribLocation(this.program.program, this.attributes[key].name);
            this.attributes[key].buffer = this.gl.createBuffer();
            this.attributes[key].numberOfItems = this.definition.width * this.definition.height * this.attributes[key].size * 2;
        }
    }
This creates our mesh attributes and buffers by looping over it
*