Bagaimana cara memisahkan logika dan rendering game? Saya tahu sepertinya sudah ada beberapa pertanyaan di sini yang menanyakan hal itu tetapi jawabannya tidak memuaskan bagi saya.
Dari apa yang saya mengerti sejauh ini, titik memisahkan mereka ke utas yang berbeda adalah agar logika permainan dapat mulai berjalan untuk centang berikutnya segera daripada menunggu vsync berikutnya di mana rendering akhirnya kembali dari panggilan swapbuffer yang telah diblokir.
Tetapi secara khusus struktur data apa yang digunakan untuk mencegah kondisi balapan antara utas logika game dan utas rendering. Agaknya thread rendering memerlukan akses ke berbagai variabel untuk mencari tahu apa yang harus digambar, tetapi logika game bisa memperbarui variabel yang sama ini.
Apakah ada teknik standar de facto untuk menangani masalah ini. Mungkin seperti menyalin data yang diperlukan oleh utas render setelah setiap eksekusi logika game. Apa pun solusinya, apakah overhead sinkronisasi atau apa pun yang kurang dari hanya menjalankan semua utas?