Подвійне буферизація у грі HTML5 Canvas?


23

Моя проста граварна гра начебто добре працює на Chrome і FF на Mac / Linux. Я ще не мав шансу тестувати це на смартфонах або Windows. Він не використовує подвійну буферизацію, але я бачив кілька прикладів JS Canvas, що використовують його.

Коли рекомендується використання подвійного буферизації? Чи має це значення лише для конкретних браузерів? Чи є значний ударний показник?

Спасибі!


2
OT: ця гра правила, це дуже перспективна, хороша робота (часто ви повинні працювати набагато більше на інтерфейсі, деякі речі незрозумілі і т.д.)
o0 '.

Це дійсно досить солодко. Рекомендація, хоча: перехід рівня карти на щось інше, ніж пробіл. Начебто дратує те, що вікно мого браузера прокручується кожного разу.
michael.bartnett

також не використовуйте клавіші зі стрілками для кермування. Зараз я перебуваю в безпечному режимі, і на маленькому екрані він продовжує прокручувати всюди ... fyi: p
Tor Valamo

Я думаю, що можна захопити ключі, щоб вікна браузера не діяли на них.
AttackingHobo

Спасибі! A, W, D і повернення працюють також зараз. Надішліть твіт імпульсу або на електронну пошту petteri@momentumracer.com для подальших коментарів або ідей, щоб ця бажання стала дошкою для чату :-).
Petteri Hietavirta

Відповіді:


15

Подвійна грамотна гра на основі полотна, безумовно, стане хітом для продуктивності. Ви намалювали б додаткову кількість пікселів, рівну розміру полотна в кожному кадрі. У іграх на основі полотна малюнок на полотні є найбільшим вузьким місцем у більшості випадків, і ви хочете максимально обмежити це, особливо на мобільних пристроях.

Chrome має прискорення графічного процесора (як і в останніх версіях), а також злий швидкий двигун JavaScript (V8), який ви не побачите, що відповідає мобільному середовищу. Навіть у Chrome ви побачите уповільнення, здійснивши подвійне буферування.

Якщо коротко сказати, вигода від подвійного буферизації ("розривання") не заслуговує на ефективність, яку ви вірогідно сприймете.


1
Однак коли ви помітите мерехтіння або щось подібне, подвійний буфер швидше за все це виправить. Щоб відповісти на ваше запитання: Якщо ви помітили мерехтіння, я пропоную використовувати подвійний буфер. Інакше теж немає причини. Зауважте, що подвійний буфер легко здійснити або видалити (якщо ви помітили, що втрата продуктивності переважає мерехтіння).
user8363


1

Я помітив, що використовуючи подвійну буферизацію так:

  1. намалюйте все невидимим полотном
  2. скопіюйте невидиме полотно на справжнє полотно

насправді уповільнює візуалізацію (нижчий кадр в секунду), а не прискорює її

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.