Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 |
g_pPlayerModel = new tbModel; if(g_pPlayerModel->Init("Data\\Spieler.tbm")) TB_ERROR("Fehler beim Laden des Spielermodells", TB_ERROR); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
// Variablen werden initialisiert tbMatrix mProjection; tbMatrix mCamera; tbMatrix mWorld; D3DLIGHT9 PointLight; float Fog = 0.0001; m_vPlayerPos = tbVector3(1.0, 0.0, 0.0); // D3D Device tbDirect3D &D3D = tbDirect3D::Instance(); // Z-Buffer leeren HRESULT hResult; hResult = D3D->Clear(0,NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 63),1.0f, 0); // Szene beginnen D3D->BeginScene(); // Projektionsmatrix erstellen und einsetzen mProjection = tbMatrixProjection(TB_DEG_TO_RAD(90.0f), D3D.GetAspect(),0.1f, 1000.0f); D3D->Clear(0, NULL, D3DCLEAR_ZBUFFER, 0, 1.0f, 0); D3D.SetTransform(D3DTS_PROJECTION, mProjection); // Kameramatrix erstellen und einsetzen mCamera = tbMatrixCamera(tbVector3(-50.0, 300.0, 50.0), tbVector3(10.0, 70.0, 0.0)); D3D.SetTransform(D3DTS_VIEW, mCamera); // Das Punktlicht wird nun erstellt. ZeroMemory(&PointLight, sizeof(D3DLIGHT9)); PointLight.Type = D3DLIGHT_POINT; // Punktlicht PointLight.Diffuse = tbColor(1.0f, 1.0f, 1.0f); // Weiße Streufarbe PointLight.Ambient = tbColor(0.0f, 0.0f, 0.0f); // Weiße Hintergrundfarbe PointLight.Specular = tbColor(0.0f, 0.0f, 0.0f); // Weiße Glanzfarbe PointLight.Position = tbVector3(1.0f, 70.0f, 5.0f); // Variierende Position PointLight.Range = 10000.0f; // 1000 Einheiten Reichweite PointLight.Attenuation0 = 1.0f; PointLight.Attenuation1 = 0.00001f; PointLight.Attenuation2 = 0.0f; // Und eingesetzt D3D->SetLight(0, &PointLight); D3D->LightEnable(0, TRUE); // Jetz noch den Spieler D3D.SetTransform(D3DTS_WORLD, tbMatrixTranslation(tbVector3(0.0,10.0,0.0))); g_pPlayerModel->Render(); D3D->EndScene(); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
class CGame { public: // Modellvariablen tbModel* m_pPlayerModel; // Modell der Spielfigur // Allgemeine Spielvariablen bool m_bPaused; // Ist das Spiel pausiert? bool m_bGameOver; // Ist der Spieler tot und das Spiel vorbei? int m_iLevel; // In welchem Level spielt der Spieler? int m_iLife; // Anzahl der verbleibenden Leben int m_iScore; // Punkte tbVector3 m_vPlayerPos; // Position des Spielers tbVector3 m_vPlayerVel; // Bewegungsvektor des Spielers float m_fLevelTime; // Zeit die für ein Level benötigt wird // Konstruktor inline CGame() {ZeroMemory(this, sizeof(CGame));} // Methoden tbResult Init(); // Initialisieren des Spieles tbResult Exit(); // Herunterfahren des Spielzustandes tbResult Load(); // Laden aller für das Spiel benötigter Dateien tbResult Unload(); // Entladen der Dateien tbResult Move(float fTime); // Bewegen der Szene tbResult Render(float fTime); // Rendern der Szene tbResult InitLevel(int iLevel); // Initialisieren eines Levels }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
tbResult CGame::Load() { // Laden des Spielermodells m_pPlayerModel = new tbModel; if(m_pPlayerModel->Init("Data\\Block2.tbm")) TB_ERROR("Fehler beim Laden des Spielermodells", TB_ERROR); // Das war es dann auch schon wieder return TB_OK; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
// Rendern der Szene tbResult CGame::Render(float fTime) { // Variablen werden initialisiert tbMatrix mProjection; tbMatrix mCamera; tbMatrix mWorld; D3DLIGHT9 PointLight; float Fog = 0.0001; m_vPlayerPos = tbVector3(1.0, 0.0, 0.0); // D3D Device tbDirect3D &D3D = tbDirect3D::Instance(); // Z-Buffer leeren HRESULT hResult; hResult = D3D->Clear(0,NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 63),1.0f, 0); // Szene beginnen D3D->BeginScene(); // Projektionsmatrix erstellen und einsetzen mProjection = tbMatrixProjection(TB_DEG_TO_RAD(90.0f), D3D.GetAspect(),0.1f, 1000.0f); D3D->Clear(0, NULL, D3DCLEAR_ZBUFFER, 0, 1.0f, 0); D3D.SetTransform(D3DTS_PROJECTION, mProjection); // Kameramatrix erstellen und einsetzen mCamera = tbMatrixCamera(tbVector3(-50.0, 300.0, 50.0), tbVector3(10.0, 70.0, 0.0)); D3D.SetTransform(D3DTS_VIEW, mCamera); // Das Punktlicht wird nun erstellt. ZeroMemory(&PointLight, sizeof(D3DLIGHT9)); PointLight.Type = D3DLIGHT_POINT; // Punktlicht PointLight.Diffuse = tbColor(1.0f, 1.0f, 1.0f); // Weiße Streufarbe PointLight.Ambient = tbColor(0.0f, 0.0f, 0.0f); // Weiße Hintergrundfarbe PointLight.Specular = tbColor(0.0f, 0.0f, 0.0f); // Weiße Glanzfarbe PointLight.Position = tbVector3(1.0f, 70.0f, 5.0f); // Variierende Position PointLight.Range = 10000.0f; // 1000 Einheiten Reichweite PointLight.Attenuation0 = 1.0f; PointLight.Attenuation1 = 0.00001f; PointLight.Attenuation2 = 0.0f; // Und eingesetzt D3D->SetLight(0, &PointLight); D3D->LightEnable(0, TRUE); // Jetz noch den Spieler D3D.SetTransform(D3DTS_WORLD, tbMatrixTranslation(tbVector3(0.0,10.0,0.0))); m_pPlayerModel->Render(); D3D->EndScene(); return TB_OK; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
tbResult COktagon::Render(float fTime) { // Spielzustand minimiert? if(tbDirect3D::Instance().GetPresentResult()) { // Spielzustand entladen m_pGame->Unload(); // Spiel entladen und neu laden Unload(); Load(); // Spielzustand neu laden m_pGame->Load(); } tbResult r = TB_OK; // Rendern des Spielzustands r = m_pGame->Render(fTime); // Fehler abfragen if(r) TB_ERROR("Fehler beim Bewegen des Spiels", TB_ERROR); return TB_OK; } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
// Bewegen des Spielers if(g_pbButtons[TB_KEY_LEFT]) { m_fPlayerZ += 300.0f * fTime; } if(g_pbButtons[TB_KEY_RIGHT]) { m_fPlayerZ -= 300.0f * fTime; } if(g_pbButtons[TB_KEY_UP]) { m_fPlayerY += 300.0f * fTime; } if(g_pbButtons[TB_KEY_DOWN]) { m_fPlayerY -= 300.0f * fTime; } m_vPlayerPos = tbVector3(0.0, m_fPlayerY, m_fPlayerZ); |
C-/C++-Quelltext |
|
1 2 3 |
// Kameramatrix erstellen und einsetzen mCamera = tbMatrixCamera(tbVector3(-250.0, 50.0, 0.0), tbVector3(0.0, 70.0, 0.0)); D3D.SetTransform(D3DTS_VIEW, mCamera); |
C-/C++-Quelltext |
|
1 2 |
mPlayer = tbMatrixTranslation(m_vPlayerPos);
D3D.SetTransform(D3DTS_WORLD, mPlayer);
|
Zitat von »"Fred"«
Wieso verformt erdas Modell so?
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
DWORD NumTextures = 1; STRING Texture1Filename = "Tex.jpg"; DWORD Texture1Type = 1; // 1: 2D-Textur; 2: Würfel; 3: Volumen DWORD Texture1ColorKey = 0x00000000; TEXTURE Texture1; TECHNIQUE T1 { PASS P1 { Texture[0] = <Texture1>; // Es scheint keine Opazitätstextur zu geben! // Wenn Sie doch eine benutzen, ändern Sie "SelectArg2" in "Modulate" um! AlphaOp[0] = SelectArg2; AlphaArg1[0] = Texture; AlphaArg2[0] = Current; // Materialeinstellungen MaterialDiffuse = {0.549f, 0.487f, 0.469f, 0.000f}; MaterialAmbient = {0.000f, 0.000f, 0.000f, 0.000f}; MaterialEmissive = {0.000f, 0.000f, 0.000f, 0.000f}; MaterialSpecular = {0.000f, 0.000f, 0.000f, 0.000f}; MaterialPower = 0.000f; } |
C-/C++-Quelltext |
|
1 2 |
m_pModel = new tbModel; if(m_pModel->Init("Data\\Wand.tbm", "Data\\")) TB_ERROR("Fehler beim Laden des Spielermodells", TB_ERROR); |
Werbeanzeige