Я делаю игру с холстом javascript. Я рисую все игровые элементы, такие как игрок, блоки и линии, но я не хочу, чтобы вы все это видели. Вместо этого нужно, чтобы весь экран был черным, ожидайте в некоторых местах, где есть источники света. Мне не нужны никакие тени, просто круг на экране, который освещен радиальным градиентом. Я могу добиться этого в течение одного источника света путем добавления прозрачного градиента после того как я нарисовал все остальное, как это: (представьте себе красный прямоугольник быть все вещи в игре)Javascript canvas simple lightsource
//Drawing all the game elements
ctx.fillStyle = "red";
ctx.fillRect(100, 100, 400, 300);
//adding the darkness and the lightsources
var grd = ctx.createRadialGradient(150, 100, 5, 150, 100, 100);
grd.addColorStop(0, "transparent");
grd.addColorStop(1, "black");
ctx.fillStyle = grd; ctx.fillRect(0, 0, 600, 400);
Но как я могу достичь этого с помощью нескольких источников света? Показанная техника не будет работать.
Я пробовал использовать Illuminated.js api, но это было невероятно медленно, и мне не нужно ничего из теней и всего, что причудливо, просто круг, где вы можете увидеть игру.
Я не испытывал с холстом, но в теории: Draw свет как * белый -> прозрачный * градиенты на черном фоне, в отдельном контексте (буфер, изображение, холст?), а затем нарисуйте это на вашей сцене в режиме многократного смешивания. – MightyPork
Это может сработать, я посмотрю. – Istlemin
Возможно, вам захочется проверить http://gamedev.stackexchange.com/, у них может быть что-то для вас. – fxm