The WebGL backend for the VideoPlayer was manipulating the graphics state directly from javascript without keeping the internal state cache (containing bindings) up to date. Now the internal state cache is correctly invalidated after the backend has updated the current frame from javascript.