Ответ 1
Короткий ответ - да. WebGL может быть немного более эффективным, если вы хорошо его используете. Наивная реализация либо не принесет никакой пользы, либо ухудшится, поэтому, если вы еще не знакомы с API OpenGL, на данный момент вы можете придерживаться холста.
Несколько более подробных заметок: WebGL может очень быстро рисовать текстурированные квадратики (спрайты), но если вам нужны более продвинутые функции 2D-рисования, такие как трассировка пути, вы захотите придерживаться 2D-холста, реализуя эти типы алгоритмов в WebGL нетривиальна. Характер вашей игры также влияет на ваш выбор. Если у вас есть только несколько движущихся объектов на экране за один раз, холст будет довольно быстрым и достаточно простым. Однако, если вы перерисовываете всю сцену в каждом кадре, WebGL лучше подходит для этого типа цикла рендеринга.
Моя рекомендация? Если вы просто изучаете оба, начните с Canvas2D и сделайте игру с этим. Абстрагируйте свой рисунок простым способом, например, имея функцию DrawPlayer
, а не ctx.drawImage(playerSprite, ....)
, и когда вы достигнете точки, в которой игра работает, и вы хотите, чтобы она работала быстрее или дизайн игры диктует, что вы ДОЛЖНЫ использовать более быстрый метод рисования, создайте альтернативный рендеринг для всех этих абстрактных функций с помощью WebGL. Это дает вам преимущества не повредить технику рендеринга ранее (которая ВСЕГДА совершает ошибку!), Позвольте вам сосредоточиться на геймплее, и если вы в конечном итоге реализуете оба метода, у вас есть отличный откат для браузеров, отличных от WebGL, таких как Интернет Проводник. Скорее всего, вам пока не понадобится повышенная скорость.