Tutorial 10 – Background Rendering

Tutorial 10 demonstriert grundlegende Techniken des Background Renderings. In Szenario 1 kommt eine einfache Sky Box für die Darstellung einer weitläufigen Berglandschaft zum Einsatz. In Szenario 2 werden gleich mehrere Techniken für die Weltraum-Hintergrundgestaltung miteinander kombiniert.
Im Einzelnen sind dies:

  • eine Background Box für die Darstellung der Hintergrundsterne,
  • eine Background-Sphäre für die Darstellung weiträumiger stellarer Nebelgebiete
  • sowie diverse Background-Billboards für die Darstellung von kleineren stellaren Gaswolken, Galaxien und wichtigen Sternen.






Schritt 1: Initialisierungsarbeiten

SkyBox = new CBackgroundBox(BackgroundShader, "../Textures/PlusX.bmp",
                                              "../Textures/MinusX.bmp",
                                              "../Textures/PlusY.bmp",
                                              "../Textures/MinusY.bmp",
                                              "../Textures/PlusZ.bmp",
                                              "../Textures/MinusZ.bmp");

// Weltraum-Hintergrund:
StarBox = new CBackgroundBoxSimple(BackgroundShader,
                                  "../Textures/BackgroundStars.bmp", 2.0f);

NebulaSphere = new CBackgroundSphere(BackgroundShader,
                                     "../Textures/Background.bmp");

BackgroundBillboards = new CBackgroundBillboards(
                              "Shader/BackgroundBillboard.vert",
                              "Shader/BackgroundBillboard.frag");

BackgroundBillboards->Init_Billboards(10);

BackgroundBillboards->Set_Billboard("../Textures/Nebula3.bmp", 120.0f,
                                    0.0f, 2.0f, 0.6f, 0.6f, -1.0f, 0.1f);
BackgroundBillboards->Set_Billboard("../Textures/Nebula6.bmp", 0.0f, 0.0f,
                                    2.0f, 1.2f, 0.6f, 0.0f, 0.1f);
BackgroundBillboards->Set_Billboard("../Textures/Nebula2.bmp", -120.0f,
                                    -5.0f, 2.0f, 0.9f, 0.8f, -0.2f, 0.1f);


Schritt 2: Rendering

if(showSkyBox == true)
SkyBox->Render_BackgroundBox(&g_ViewProjectionMatrix,
                                 &D3DXVECTOR4(1.2, 1.0, 1.0, 1.0));
else
{
// Weltraum-Hintergrund:
StarBox->Render_BackgroundBox(&g_ViewProjectionMatrix,
                                  &D3DXVECTOR4(1.0, 1.0, 1.0, 1.0));

NebulaSphere->Render_BackgroundSphere(&g_ViewProjectionMatrix, true,
                                      &D3DXVECTOR4(0.8, 0.8, 0.8, 1.0));

BackgroundBillboards->Render_Billboards(&g_ViewProjectionMatrix,
                                        &g_CameraViewDirection,
                                        &D3DXVECTOR4(1.0, 1.0, 1.0, 1.0));
}



Hinweise zum Erstellen eines neuen Projekts:

  • Kopieren Sie den Ordner GraphicsAndPhysicsFrameworkImports ins Projektverzeichnis
  • Kopieren sie alle dll-Dateien sowie die Konfigurationsdatei ResolutionAndRendering.txt aus besagtem Ordner ins gleiche Verzeichnis, in dem sich auch die exe-Datei befindet (in unseren Programmbeispielen ist dies das Bin-Verzeichnis)
  • Binden Sie die folgenden Dateien in Ihr Projekt ein: GraphicsAndPhysics_Framework_Imports.h, GraphicsAndPhysics_Framework_Imports.lib, glew32.lib, glew32s.lib, glut32.lib. Die Glew- und Glut-Bibliotheken ermöglichen die Nutzung der aktuellen OpenGL-Spezifikationen unabhängig vom Framework.