setProgram(program) {
        this.program = program;
        this.initAttributes();

        // use vertex array objects if available
        if(this.renderer._isWebGL2) {
            this._vao = this.gl.createVertexArray();
            this.gl.bindVertexArray(this._vao);
        }
        else if(this.renderer.extensions['OES_vertex_array_object']) {
            this._vao = this.renderer.extensions['OES_vertex_array_object'].createVertexArrayOES();
            this.renderer.extensions['OES_vertex_array_object'].bindVertexArrayOES(this._vao);
        }

        this.initializeBuffers();
    }
Called on init and on context restoration to set up the attribute buffers
     Use VertexArrayObjects whenever possible
*