setVertexAttributes(gl, attributes, vertexByteSize) {
		// set the vertex attributes
		for (let index = 0; index < attributes.length; ++index) {
			const element = attributes[index];
			const location = this.getAttribLocation(element.name);

			if (location !== -1) {
				gl.enableVertexAttribArray(location);
				gl.vertexAttribPointer(
					location,
					element.size,
					element.type,
					element.normalized,
					vertexByteSize,
					element.offset,
				);
			} else {
				gl.disableVertexAttribArray(index);
			}
		}
	}
activate the given vertex attribute for this shader
@param {WebGLRenderingContext} gl - the current WebGL rendering context
@param {object[]} attributes - an array of vertex attributes
@param {number} vertexByteSize - the size of a single vertex in bytes