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);
"../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));
}
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.