Ситуация в основном рисует несколько движущихся примитивных фигур с основным линейным градиентом, поэтому они перекрываются на прозрачном пустом холсте. Там, где они перекрывают изменения значения альфа-канала (т.е. они истекают кровью).Пытается манипулировать альфой на холсте без get/putImageData?
Заключительный этап округляет альфа для каждого отдельного пикселя, поэтому он равен 0 или 255, в зависимости от того, к чему он ближе.
С ImageData это легко сделать -
var ctxImage = ctx.getImageData(0, 0, ctx.canvas.width, ctx.canvas.height);
var ctxData = ctxImage.data;
for (var i = 0; i < ctxData.length; i += 4) {
ctxData[i + 3] = ctxData[i + 3] > 128 ? 255 : 0;
// or ctxData[i + 3] = Math.round(ctxData[i + 3]/255) * 255;
}
ctx.putImageData(ctxImage, 0, 0);
Как что getImageData очень дорого в процессорное время, я надеялся, чтобы выработать решение, которое используется globalCompositeOperation, но просто не может показаться каким-либо образом, чтобы получить это работать, любые идеи?
Вот что я подумал - но надеялся, что я смогу получить что-то близкое - просвет полупрозрачности не плохой: - / – Rycochet