In che modo una logica di gioco e un rendering separati? So che sembrano esserci già domande qui che chiedono esattamente questo, ma le risposte non sono soddisfacenti per me.
Da quello che ho capito finora il punto di separarli in diversi thread è in modo che la logica di gioco possa iniziare immediatamente a correre per il prossimo tick invece di aspettare il prossimo vsync in cui il rendering ritorna finalmente dalla chiamata dello swapbuffer che sta bloccando.
Ma in particolare quali strutture di dati vengono utilizzate per prevenire le condizioni di competizione tra il thread della logica di gioco e il thread di rendering. Presumibilmente il thread di rendering necessita dell'accesso a varie variabili per capire cosa disegnare, ma la logica di gioco potrebbe aggiornare queste stesse variabili.
Esiste una tecnica standard di fatto per gestire questo problema. Forse come copiare i dati necessari al thread di rendering dopo ogni esecuzione della logica di gioco. Qualunque sia la soluzione, l'overhead della sincronizzazione o qualsiasi altra cosa sarà inferiore alla semplice esecuzione di tutto il thread singolo?