Saat ini saya sedang mengerjakan game balap mobil 3D untuk platform iOS. Saya harus menerapkan sistem replay dan kemudian merekam replay itu dalam file video untuk mengunggahnya ke YouTube.
Saya hanya mengalami masalah dengan bagian rekaman, sisanya selesai. Apa yang saya lakukan adalah menggunakan glReadPixels()
perintah OpenGL ES 1.1 untuk menangkap konten framebuffer dan membuat video dari frame ini selama runtime (menggunakan kerangka kerja AVFoundation).
Masalah yang saya hadapi adalah saya harus memanggil glReadPixels()
setiap pembaruan yang sangat lambat. Ini mengurangi FPS dari sekitar 30 menjadi hanya 2-3 ... Apakah ada alternatif untuk glReadPixels()
perintah? Atau apakah ada yang membuat sistem replay dan direkam ke video?
Saya pikir cara paling sederhana adalah merekam tindakan pengguna dan AI dan menyatakan selama bermain game, bukan frame yang sebenarnya. Setelah gameplay selesai, baik pemain menyelesaikan balapan atau berhenti kembali ke menu utama mereka diberi pilihan untuk melihat replay (atau menyimpan satu) dan hanya kemudian tindakan-tindakan yang digunakan untuk menciptakan kembali frame dengan memainkan kembali aksi dan nyatakan melalui mesin game. Ini memiliki manfaat tambahan karena tidak (pada dasarnya) harus menggambar setiap frame penuh beberapa kali tambahan selama bermain game.
sumber