Il modello di base richiesto per il tuo sistema di realtà aumentata sembra essere un'architettura basata su eventi:
- Diverse applicazioni reagiscono agli eventi o si attivano eventi. Ad esempio, fornendo fotogrammi video, calcolando la posizione e i movimenti basati sugli accelerometri, fornire / aggiornare oggetti per il rendering.
- La tua applicazione GUI integra tutti gli eventi rilevanti per la visualizzazione e invia eventi per tradurre comandi utente per l'applicazione back-ebnd
Questo articolo spiega i principi di base di tale architettura e identifica lo stile di elaborazione degli eventi:
- Nel tuo caso sospetto che tu possa dimenticare l'elaborazione di eventi semplici ,
- Vai direttamente a elaborazione evento stream perché unirai il flusso video e i flussi di rendering 3D
- Potresti forse anche aver bisogno dell'elaborazione di eventi complessi (CEP) per coordinare diversi flussi e correlarli (cioè, correlare il video con i rilevatori di movimenti per influenzare la posizione degli oggetti 3D da rendere.
Le tecniche pratiche per implementare questa architettura basata su eventi coinvolgono tutti i meccanismi IPC , come i messaggi basati sistemi, memoria condivisa, socket based (sia protocollo ad hoc o protocolli webservice standardizzati). La scelta dipenderà dal sistema operativo e dai vincoli prestazionali.
Ma rimane una domanda: hai davvero bisogno di diverse applicazioni? In caso contrario, dovresti prendere in considerazione un'applicazione multithread, che faciliterà la condivisione dei dati con una latenza molto bassa e un utilizzo massimo della CPU. Per un modello di realtà aumentata ad alta intensità di elaborazione, questa potrebbe essere davvero un'alternativa interessante. Ovviamente, questo approccio è compatibile con l'approccio plugin menzionato da Rafi.