Penyangga ganda pada game HTML5 Canvas?

23

Game kanvas sederhana saya tampaknya berfungsi dengan baik di Chrome dan FF di Mac / Linux. Saya belum memiliki kesempatan untuk mengujinya di ponsel pintar atau lingkungan Windows. Itu tidak menggunakan buffering ganda tapi saya telah melihat beberapa contoh JS Canvas menggunakannya.

Kapan sebaiknya menggunakan buffering ganda? Apakah itu membuat perbedaan hanya untuk browser tertentu? Apakah ada hit kinerja yang signifikan?

Terima kasih!

Petteri Hietavirta
sumber
2
OT: aturan permainan ini, ini sangat menjanjikan, kerja bagus (Anda harus bekerja lebih banyak pada antarmuka, beberapa hal tidak jelas, dll.)
o0 '.
Ini memang manis sekali. Rekomendasi meskipun: tingkat peta beralih ke sesuatu selain ruang. Agak menyebalkan memiliki jendela browser saya menggulir setiap kali.
michael.bartnett
juga tidak menggunakan tombol panah untuk menyetir .. saya saat ini dalam mode aman dan pada layar kecil itu terus bergulir di semua tempat ... fyi: p
Tor Valamo
Saya pikir mungkin untuk mengambil kunci sehingga jendela browser tidak bertindak atas mereka.
AttackingHobo
Terima kasih! A, W, D dan kembali bekerja juga sekarang. Kirim tweet ke momentumracer atau email [email protected] untuk komentar atau ide lebih lanjut sehingga ini tidak akan menjadi papan obrolan :-).
Petteri Hietavirta

Jawaban:

15

Penyangga ganda game berbasis kanvas tentu akan menjadi hit kinerja. Anda akan menggambar jumlah piksel tambahan yang sama dengan ukuran kanvas Anda setiap bingkai. Dalam permainan berbasis kanvas menggambar ke kanvas adalah hambatan terbesar dalam banyak kasus dan Anda ingin membatasi sebanyak mungkin, terutama pada perangkat seluler.

Chrome memiliki akselerasi GPU (pada versi terbaru) serta mesin JavaScript cepat yang jahat (V8) yang tidak akan Anda saksikan cocok di lingkungan seluler. Bahkan di Chrome Anda akan melihat pelambatan dengan menerapkan buffering ganda.

Singkatnya, manfaat double buffering (berurusan dengan "merobek") tidak sepadan dengan kinerja yang Anda akan ambil kemungkinan besar.

Geoff
sumber
1
Namun ketika Anda melihat kerlap-kerlip atau sejenisnya, buffer ganda kemungkinan besar akan memperbaikinya. Untuk menjawab pertanyaan Anda: Jika Anda melihat kerlipan saya sarankan menggunakan buffer ganda. Kalau tidak, tidak ada alasan juga. Perhatikan bahwa buffer ganda mudah diterapkan atau dihapus (jika Anda melihat kehilangan kinerja lebih besar daripada berkedip-kedip).
user8363
1

Saya perhatikan bahwa menggunakan melakukan buffering ganda seperti ini:

  1. menggambar semuanya kanvas yang tidak terlihat
  2. salin kanvas tak terlihat ke kanvas asli

sebenarnya memperlambat rendering (fps lebih rendah), bukannya mempercepatnya

Bulan perak
sumber