Wie man volumetrischen Nebel in OpenGL

April 23

1999 basiert die iD Tech 3 Motor brachte Spiele in einer neuen grafischen Ära mit einem OpenGL Beschleuniger zur Verbesserung der gerenderter Grafiken mit Shadern, komplexe Beleuchtung und dynamische Schatten. Der Motor setzte sich auch stark auf die Verwendung von volumetrischen Nebel zur Begrenzung des visuellen Abstand um Frameraten zu stabilisieren und zu verringern Pop-in. Heute die Verwendung von Nebel als eine Optimierung Tool noch findet Verwendung bei der Entwicklung von Handyspielen, wo grafische Rechenleistung knapp ist.

Anweisungen

1 Zeichnen Sie ein neues Fenster-Gerät mit dem GLUT-Toolkit. Innerhalb der Schleife "main() {...}" zunächst übergeben die Befehle "glutInit;" und "glutInitDisplayMode(...);" wo GlutInitDisplayMode Argumente definieren Sie die Einstellungen wie Farbtiefe oder Frame Pufferung stattfinden wird.

2 Gebrauch "glutInitWindowSize(x,y);" definieren Windows Größe und Auflösung rendern und "glutInitWindowPosition(x,y);" zum Festlegen des Punkt, wo das linke obere Pixel sollte beginnen, Zeichnung, benutze x, y-Argumente für die Pixel-Koordinaten darstellen. Zeigen Sie des Fensters an und beginnen Sie Rendering mit dem Befehl "glutCreateWindow();."

3 Aktivieren Sie die Verwendung von Nebel und Tiefe, die mit dem Ausdruck "GlEnable(GL_FOG | testen GL_DEPTH_TEST);." Zeichnung der volumetrischen Nebel ist nur möglich durch den Einsatz der OpenGL-Erweiterung GlFogCoordfEXT und möglicherweise nicht verfügbar in Ihrer Renderingziel. Die Verwendung von glGetString(GL_EXTENSIONS) und strstr() können Sie die OpenGL-Extension-Liste der aktuellen Wiedergabe-Gerät suchen und wird empfohlen, wenn Sie auf einem mobilen Gerät bereitstellen.

4 Geben Sie an, wie der Nebel in die 3d Welt gerendert wird. "GlFogi (GL_FOG_MODE,...);" verwenden um festzulegen, wie der Nebel wird verblassen, wie's näher an der Kamera, "GlFogfv (GL_FOG_COLOR,...);" die Farbe von grau geht, schließlich über "GlFogf (GL_FOG_START)" und "GlFogf (GL_FOG_END,...);" ändern, wo der Nebel am wenigsten werden standardmäßig zu ändern und dichtesten.

5 Erstellen Sie den Code in eine ausführbare Datei, und führen Sie es zu sehen, wie der Nebel der Welt gerendert wird. Von hier aus können Sie weiterhin der Nebeleffekt in einem richtigen Projekt im aktuellen Zustand zu verwenden; Allerdings wird nicht die volumetrische Wirkung erzielt, wie er solide erscheint. Volumetrischen Nebel muss direkt ein 3d Mesh, viel wie eine Textur oder einen Shader angewendet werden.

6 Verwenden Sie die "glFogCoordfEXT();" neben "glVertex3f();" Ruft beim Rendern eines Scheitelpunkts zum Aussichtspunkt, der solide Nebeleffekt aus vor in einer atmosphärischen Nebel mit Tiefe zu verwandeln.

Tipps & Warnungen

  • Obwohl dieser Artikel der Programmiersprache C++, um die Verwendung von OpenGL verwendet hat; Sprachen wie Java, Objective C und c# können OpenGL auf die gleiche Weise mit sehr wenigen Syntaxänderungen aufgerufen werden.