Working code:
var canvas = document.createElement('canvas');
var offscreen = canvas.transferControlToOffscreen();
When using .getContext():
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
var offscreen = canvas.transferControlToOffscreen();
// InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable
Further attempts do not work either:
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
delete ctx;
var offscreen = canvas.transferControlToOffscreen();
Or even so:
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
ctx.reset();
delete ctx;
var offscreen = canvas.transferControlToOffscreen();
Nothing changes with webgl instead of 2d
So, how can i get the offscreen of a canvas which has something drawn on it, and then send it to a worker? Or must i use something like getImageData() and send the result alongside the offscreen of a brand new canvas, and let the worker copy with putImageData()? I do not want to make these additional operations (because will run slower).
Another way would have been to use cloneNode(), but the canvas image does not get copied.
Ive looked trough all methods of canvas and of context, but nothing seems to fix the problem.
I am using FF 67 with offscreen enabled. I suppose there is no difference in Chrome.