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 bypassati 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 affidarsi a cicli innati al di fuori del programma. La modalità immediata viene spesso utilizzata per programmi che richiedono i tempi di rendering più rapidi possibili, come applicazioni multimediali o videogiochi, oppure viene utilizzata come strumento didattico 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 o aree vuote di uno schermo, poiché non vengono effettuate chiamate automatiche per ridisegnare il fotogramma corrente, se necessario. Una variante è nota come modalità mista, in cui un programma mantiene in posizione il framework di rendering mantenuto mentre tenta di controllarne alcune parti tramite funzioni di stile in modalità immediata.

In molte applicazioni informatiche, il rendering delle informazioni o della grafica su un dispositivo di visualizzazione viene eseguito tramite un’architettura di programma basata su eventi. Ciò significa che lo schermo viene ridisegnato solo in risposta a qualche tipo di input da un programma o dall’utente. Funziona bene per programmi come elaboratori di testi o browser Web, ma non 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 è usare la modalità immediata.

Invece di consentire a un sistema operativo o a una libreria grafica di controllare quando e come un display viene aggiornato e renderizzato, il programma assume il controllo completo, rimuovendo qualsiasi barriera tra il dispositivo di visualizzazione e il codice dell’applicazione. In questo modo, un programma può creare il proprio ciclo di visualizzazione, utilizzando timer e altro codice personalizzato, in modo che lo schermo venga ridisegnato tante o poche volte quanto è necessario per ottenere il risultato desiderato. Una complicazione nell’uso della modalità immediata è che alcune delle funzionalità trasparenti del rendering in modalità conservata, come un motore geometrico, potrebbero non essere disponibili, il che richiede che l’applicazione disponga delle proprie implementazioni. Un altro problema è che un programma può richiedere una grande quantità di potenza di elaborazione per mantenere il ciclo di rendering a una velocità accettabile.

Un’alternativa all’utilizzo esclusivo della modalità immediata consiste nell’utilizzare una modalità di rendering mista. In questo progetto, il framework di rendering in modalità conservata 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 di come interagiscono il codice utente e il codice della libreria.