Che cos'è la modalità immediata?
Nella programmazione di computer grafica, la modalità immediata è uno stato di rendering in cui la normale sequenza di azioni e il framework in cui esistono sono completamente ignorati e, in alcuni casi, disattivati. Ciò significa che l'applicazione in esecuzione deve chiamare direttamente le funzioni necessarie per mostrare qualsiasi cosa su un dispositivo di visualizzazione come un monitor invece di fare affidamento su cicli innati al di fuori del programma. La modalità immediata viene spesso utilizzata per programmi che richiedono i tempi di rendering più veloci possibili, come applicazioni multimediali o videogiochi, oppure viene utilizzata come strumento di insegnamento quando si impara a utilizzare librerie grafiche complesse. Un programma mal progettato o implementato in modo errato che utilizza il rendering in modalità immediata può causare la visualizzazione e la persistenza di schermate vuote o aree vuote di una schermata, poiché non vengono effettuate chiamate automatiche per ridisegnare il frame corrente, se necessario. Una variante è nota come modalità mista, in cui un programma mantiene attivo il framework di rendering mentre tenta di controllarne alcune parti tramite funzioni di stile in modalità immediata.
In molte applicazioni informatiche, il rendering di informazioni o grafica su un dispositivo di visualizzazione viene eseguito attraverso un'architettura di programma basata su eventi. Ciò significa che lo schermo viene ridisegnato solo in risposta a un tipo di input da un programma o dall'utente. Funziona bene con programmi come word processor o browser web, ma non funziona per applicazioni come lettori multimediali, software di rendering artistico o videogiochi in cui potrebbe essere necessario ridisegnare uno schermo 60 o più volte al secondo senza alcun tipo di ingresso. La soluzione è utilizzare la modalità immediata.
Invece di consentire a un sistema operativo o una libreria grafica di controllare quando e come un display viene aggiornato e reso, il programma assume il controllo completo, eliminando qualsiasi barriera tra il dispositivo di visualizzazione e il codice dell'applicazione. In questo modo, un programma può creare il proprio loop di visualizzazione, utilizzando timer e altro codice personalizzato, in modo che lo schermo venga ridisegnato tutte le volte o il numero di volte necessario per ottenere il risultato desiderato. Una complicazione nell'uso della modalità immediata è che alcune delle funzioni trasparenti del rendering in modalità mantenuta - come un motore di geometria - potrebbero non essere disponibili, richiedendo che l'applicazione abbia le proprie implementazioni. Un altro problema è che un programma può richiedere una grande quantità di potenza di elaborazione per mantenere il loop di rendering a una velocità accettabile.
Un'alternativa all'utilizzo esclusivo della modalità immediata è l'uso di una modalità di rendering mista. In questo progetto, il framework di rendering in modalità mantenuta viene mantenuto in posizione in modo da poter utilizzare tutte le funzionalità di una libreria grafica, ma alcune funzioni o metodi vengono sovrascritti e sostituiti con codice generato dall'utente che può forzare il framework di rendering esistente a funzionare in un modo che è più simile alla modalità immediata. Questo metodo può essere efficace, ma può anche creare codice difficile da eseguire il debug e che potrebbe avere risultati imprevisti, a seconda dell'interazione tra il codice utente e il codice della libreria.