Schritt 1: 3D-Modell und GLSL-Shader-Programm laden
TestModel = new CModel;
TestModel->Init_Model("../Models/Destroyer_Fed", 5, true);
NormalMappingShader = new CGLSLShader;
NormalMappingShader->Init_UserDefined_Shader(
"Shader/NormalMappingWithTextureEffects.vert",
"Shader/NormalMappingWithTextureEffects.frag",
Format_CTexturedVertexWithNormal_NM);
TestModel->Init_Model("../Models/Destroyer_Fed", 5, true);
NormalMappingShader = new CGLSLShader;
NormalMappingShader->Init_UserDefined_Shader(
"Shader/NormalMappingWithTextureEffects.vert",
"Shader/NormalMappingWithTextureEffects.frag",
Format_CTexturedVertexWithNormal_NM);
Schritt 2: Anlegen einer Modell-Instanz
// Jede Modell-Instanz repräsentiert ein 3D-Objekt in der Spielewelt.
// Bevor ein 3D-Objekt gerendert werden kann, muss man der Modell-Instanz
// ein 3D-Modell zuordnen.
TestModelInstance = new CModelInstance;
TestModelInstance->Init_ModelInstance(TestModel);
// Bevor ein 3D-Objekt gerendert werden kann, muss man der Modell-Instanz
// ein 3D-Modell zuordnen.
TestModelInstance = new CModelInstance;
TestModelInstance->Init_ModelInstance(TestModel);
Schritt 3: Bewegen einer Modell-Instanz
D3DXMATRIXA16 FrameRotationMatrix;
D3DXMatrixRotationY(&FrameRotationMatrix, -0.5f*g_FrameTime);
TestModel_WorldSpaceOrientation *= FrameRotationMatrix;
TestModelInstance->Set_New_ModelOrientationMatrix(
&TestModel_WorldSpaceOrientation);
TestModelInstance->Set_New_ModelOrientation();
TestModelInstance->Set_New_WorldSpacePosition(
&TestModel_WorldSpacePosition);
TestModelInstance->Calculate_ShaderTransformationMatrices(
&g_ViewProjectionMatrix, &g_CameraPosition);
D3DXMatrixRotationY(&FrameRotationMatrix, -0.5f*g_FrameTime);
TestModel_WorldSpaceOrientation *= FrameRotationMatrix;
TestModelInstance->Set_New_ModelOrientationMatrix(
&TestModel_WorldSpaceOrientation);
TestModelInstance->Set_New_ModelOrientation();
TestModelInstance->Set_New_WorldSpacePosition(
&TestModel_WorldSpacePosition);
TestModelInstance->Calculate_ShaderTransformationMatrices(
&g_ViewProjectionMatrix, &g_CameraPosition);
Schritt 4: Rendern einer Modell-Instanz
NormalMappingShader->Use_Shader();
//Render_Model(TestModelInstance, NormalMappingShader, g_LODStep, 1.0f);
Render_Model_And_Use_TextureRenderLists(TestModelInstance,
NormalMappingShader,
g_LODStep, 1.0f);
NormalMappingShader->Stop_Using_Shader();
//Render_Model(TestModelInstance, NormalMappingShader, g_LODStep, 1.0f);
Render_Model_And_Use_TextureRenderLists(TestModelInstance,
NormalMappingShader,
g_LODStep, 1.0f);
NormalMappingShader->Stop_Using_Shader();
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.