Come fare volumetrico Nebbia in Open GL

April 21

Nel 1999, il motore id Tech 3 ha portato i giochi in una nuova era grafica utilizzando un acceleratore basato OpenGL per migliorare la resa grafica con shader, complessa illuminazione e ombre dinamiche. Il motore anche fatto affidamento sull'uso di nebbia volumetrica per limitare la distanza visiva per stabilizzare frame rate e ridurre pop-in. Oggi l'uso di nebbia come strumento di ottimizzazione trova ancora utilizzare nello sviluppo di giochi mobili in cui la potenza di elaborazione grafica è scarsa.

istruzione

1 Disegnare un nuovo dispositivo finestra utilizzando il toolkit GLUT. All'interno del "main () {...}" loop, inizia facendo passare i comandi "glutInit ();" e "glutInitDisplayMode (...);" dove glutInitDisplayMode avrà argomenti per definire le impostazioni come la profondità del colore o frame buffer.

2 Utilizzare "glutInitWindowSize (x, y);" per definire la dimensione finestre e risoluzione di rendering, e "glutInitWindowPosition (x, y);" per impostare il punto in cui il pixel superiore sinistro dovrebbe iniziare a disegnare, con x, y argomenti per rappresentare pixel coordinate. Visualizzare la finestra e iniziare il rendering con il comando "glutCreateWindow () ;."

3 Consentire l'utilizzo di nebbia e la profondità di prova con l'espressione "glEnable (GL_FOG | GL_DEPTH_TEST) ;." Disegno nebbia volumetrica è possibile solo attraverso l'uso della estensione OpenGL glFogCoordfEXT e potrebbe non essere disponibile per il vostro target di rendering. L'uso di glGetString (GL_EXTENSIONS) e strstr () vi permetterà di cercare lista delle estensioni OpenGL del dispositivo di rendering corrente, ed è consigliato se si sta distribuendo a un dispositivo mobile.

4 Specificare come la nebbia sarà reso nel mondo in 3D. Utilizzare "glFogi (GL_FOG_MODE, ...);" per impostare come la nebbia svanirà in quanto si avvicina alla telecamera, "glFogfv (GL_FOG_COLOR, ...);" per cambiare il colore dal grigio di default, infine, l'utilizzo di "glFogf (GL_FOG_START, ...)" e "glFogf (GL_FOG_END, ...);" di modificare in cui la nebbia sarà meno e più denso.

5 Crea il codice in un file eseguibile e lanciarlo per vedere come la nebbia rende al mondo. Da qui è possibile continuare a utilizzare l'effetto nebbia in un progetto corretto nel suo stato attuale; tuttavia, non produrrà l'effetto volumetrico come apparirà solido. nebbia volumetrica deve essere applicato direttamente ad un mesh 3D, molto simile a una texture o uno shader.

6 Utilizzare il "glFogCoordfEXT ();" funzione di fianco "glVertex3f ();" chiamate durante il rendering un vertice al punto di vista, trasformando l'effetto nebbia solido da prima in una nebbia atmosferica con la profondità.

Consigli e avvertenze

  • Anche se questo articolo ha utilizzato il linguaggio di programmazione C ++ per dimostrare l'uso di OpenGL; linguaggi come Java, Objective C, e C # possono chiamare OpenGL allo stesso modo, con poche modifiche di sintassi.