_restoreContext() {
        this._canDraw = false;

        if(this._matrices) {
            this._matrices = null;
        }

        // reset the used program based on our previous shaders code strings
        this._program = new Program(this.renderer, {
            parent: this,
            vertexShader: this._program.vsCode,
            fragmentShader: this._program.fsCode
        });

        if(this._program.compiled) {
            // reset geometry
            this._geometry.restoreContext(this._program);

            // create and set program uniforms
            this._program.createUniforms(this.uniforms);

            // make uniforms accessible directly
            this.uniforms = this._program.uniformsManager.uniforms;

            // program restored callback of Planes and ShaderPasses
            this._programRestored();
        }
    }
Used internally to handle context restoration
*