Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Cinque funzioni WGL gestiscono i contesti di rendering, come descritto nella tabella seguente.
| Funzione WGL | Descrizione |
|---|---|
| wglCreateContext | Crea un nuovo contesto di rendering. |
| wglMakeCurrent | Imposta il contesto di rendering corrente di un thread. |
| wglGetCurrentContext | Ottiene un handle per il contesto di rendering corrente di un thread. |
| wglGetCurrentDC | Ottiene un handle per il contesto di dispositivo associato al contesto di rendering corrente di un thread. |
| wglDeleteContext | Elimina un contesto di rendering. |
La funzione wglCreateContext accetta un handle del contesto di dispositivo come parametro e restituisce un handle di contesto di rendering. Il contesto di rendering creato è adatto per il disegno sul dispositivo a cui fa riferimento l'handle del contesto di dispositivo. In particolare, il formato pixel corrisponde al formato pixel del contesto di dispositivo. Dopo aver creato un contesto di rendering, è possibile rilasciare o eliminare il contesto del dispositivo. Per altri dettagli sulla creazione, il rilascio e l'eliminazione di un contesto di dispositivo, vedere Contesti di dispositivo.
Nota
Il contesto di dispositivo inviato a wglCreateContext deve essere un contesto di dispositivo di visualizzazione, un contesto di dispositivo di memoria o un contesto di dispositivo della stampante a colori che usa quattro o più bit per pixel. Il contesto del dispositivo non può essere un contesto di dispositivo della stampante monocromatica.
La funzione wglMakeCurrent accetta un handle di contesto di rendering e un handle del contesto di dispositivo come parametri. Tutte le successive chiamate OpenGL effettuate dal thread vengono effettuate tramite tale contesto di rendering e vengono disegnate nel dispositivo a cui fa riferimento tale contesto di dispositivo. Il contesto del dispositivo non deve essere lo stesso passato a wglCreateContext quando è stato creato il contesto di rendering, ma deve trovarsi nello stesso dispositivo e avere lo stesso formato pixel. La chiamata a wglMakeCurrent crea un'associazione tra il contesto di rendering fornito e il contesto di dispositivo. Non è possibile rilasciare o eliminare il contesto di dispositivo associato a un contesto di rendering corrente fino a quando il contesto di rendering non è aggiornato.
Una volta che un thread ha un contesto di rendering corrente, può effettuare chiamate grafiche OpenGL. Tutte le chiamate devono passare attraverso un contesto di rendering. Non accade nulla se si effettuano chiamate grafiche OpenGL da un thread che non dispone di un contesto di rendering corrente.
La funzione wglGetCurrentContext non accetta parametri e restituisce un handle al contesto di rendering corrente del thread chiamante. Se il thread non ha alcun contesto di rendering corrente, il valore restituito è NULL.
Quando si ottiene un handle per il contesto di dispositivo associato al contesto di rendering corrente di un thread chiamando wglGetCurrentDC, l'associazione viene creata quando viene reso corrente un contesto di rendering.
È possibile interrompere l'associazione tra un contesto di rendering corrente e un thread chiamando wglMakeCurrent con uno dei due handle seguenti:
- Handle del contesto di rendering Null
- Handle diverso da quello originariamente chiamato
Dopo aver chiamato wglMakeCurrent con il parametro handle del contesto di rendering impostato su NULL, il thread chiamante non ha alcun contesto di rendering corrente. Il contesto di rendering viene rilasciato dalla connessione al thread e termina l'associazione del contesto di rendering a un contesto di dispositivo. OpenGL scarica tutti i comandi di disegno e può rilasciare alcune risorse. Non verrà eseguito alcun disegno OpenGL fino alla chiamata successiva a wglMakeCurrent, perché il thread non può effettuare chiamate grafiche OpenGL fino a quando non riprende un contesto di rendering corrente.
Il secondo modo per interrompere l'associazione tra un contesto di rendering e un thread consiste nel chiamare wglMakeCurrent con un contesto di rendering diverso. Dopo tale chiamata, il thread chiamante ha un nuovo contesto di rendering corrente, il contesto di rendering corrente precedente viene rilasciato dalla connessione al thread e l'associazione del contesto di rendering corrente a un contesto di dispositivo termina.
La funzione wglDeleteContext accetta un singolo parametro, ovvero l'handle per il contesto di rendering da eliminare. Prima di chiamare wglDeleteContext, rendere il contesto di rendering non corrente chiamando wglMakeCurrent ed eliminare o rilasciare il contesto di dispositivo associato chiamando DeleteDC o ReleaseDC in base alle esigenze.
Si tratta di un errore per un thread per eliminare un contesto di rendering che rappresenta il contesto di rendering corrente di un altro thread. Tuttavia, se un contesto di rendering è il contesto di rendering corrente del thread chiamante, wglDeleteContext scarica tutti i comandi di disegno OpenGL e rende il contesto di rendering non corrente prima di eliminarlo. In questo caso, la relying on wglDeleteContext per rendere un contesto di rendering non corrente richiede al programmatore di eliminare o rilasciare il contesto di dispositivo associato.