_draw() {
        // only draw if the texture is active (used in the shader)
        if(this._sampler.isActive) {
            // bind the texture
            this._bindTexture();

            // if no videoFrameCallback check if the video is actually really playing
            if(this.sourceType === "video" && this.source && !this._videoFrameCallbackID && this.source.readyState >= this.source.HAVE_CURRENT_DATA && !this.source.paused) {
                this._willUpdate = true;
            }

            if(this._forceUpdate || (this._willUpdate && this.shouldUpdate)) {
                // force mipmaps regeneration if needed
                this._state.generateMipmap = false;
                this._upload();
            }

            // reset the video willUpdate flag
            if(this.sourceType === "video") {
                this._willUpdate = false;
            }

            this._forceUpdate = false;
        }

        // set parameters that need to be set after texture uploading
        if(this.parameters._shouldUpdate) {
            this._updateTexParameters();
            this.parameters._shouldUpdate = false;
        }
    }
This is called to draw the texture
*