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 3 4 5 6 7 8 |
veResult SetLightColor(veColor LightColor); // Memberfunktion der Klasse veLight veResult veLight::SetLightColor(veColor LightColor) // Die Deklaration in der Hauptanwendung { // ...... return VE_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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
virtual veResult RenderScene(float fTime); // Die beiden virtuellen Memberfunktionen der Klasse veScene virtual veResult MoveScene(float fTime); veResult veScene::RenderScene(float fTime) { // ----------------------------------------------------------------------------------- // Diese Funktion wird genommen, wenn der Benutzer die RenderScene Funktion noch nicht definiert hat. // ----------------------------------------------------------------------------------- return VE_DEFAULT; } veResult veScene::MoveScene(float fTime) { // ----------------------------------------------------------------------------------- // Diese Funktion wird genommen, wenn der Benutzer die MoveScene Funktion noch nicht definiert hat. // ----------------------------------------------------------------------------------- return VE_DEFAULT; } VE_API veResult veRunGame() { // Variablen deklarieren MSG msg; LONGLONG StartTime; LONGLONG EndTime; double Time; BOOL bQuit = FALSE; BOOL bInput = FALSE; ZeroMemory(&msg, sizeof(MSG)); Time = 0.0; // Nachrichtenschleife der VisualEngine while(!bQuit) { // Die Startzeit berechnen QueryPerformanceCounter((LARGE_INTEGER*)(&StartTime)); while(PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)) { TranslateMessage(&msg); DispatchMessage(&msg); if(msg.message == WM_QUIT) { bQuit = TRUE; } } // Den aktuellen Status der Aktivität von dem Input bekommen bInput = veScene::SceneInstance().GetInputActivity(); // Wenn Input vom Benutzer gebrauch wird, dann wird das Input geupdatet. if(bInput == true) { veScene::SceneInstance().UpdateInput(); } ve_g_dNumSecsPassed = Time; if(veScene::SceneInstance().RenderScene(Time) == VE_OK) { // Alles ist in Ordnung } if(veScene::SceneInstance().MoveScene(Time) == VE_OK) { // Endzeit berechnen QueryPerformanceCounter((LARGE_INTEGER*)(&EndTime)); if(EndTime == StartTime) Time = 0.0001; Time = (float)(EndTime - StartTime) / ve_g_dFrequency; } // Endzeitpunkt messen QueryPerformanceCounter((LARGE_INTEGER*)(&EndTime)); if(EndTime == StartTime) Time = 0.0001; Time = (float)(EndTime - StartTime) / ve_g_dFrequency; // Den Zeitzähler erhöhen ve_g_dTime += Time; } return VE_OK; } // Das Hauptprogramm veResult veScene::RenderScene(float fNumSecsPassed) { Scene->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); Scene->Clear(0, NULL, D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(0, 0, 0), 1.0f, 0); Scene->BeginScene(); pSpaceship->RenderMesh(); Scene->EndScene(); Scene->Present(NULL, NULL, NULL, NULL); return VE_OK; } veResult veScene::MoveScene(float fNumSecsPassed) { D3DXMATRIX mRotation; static float Translation = 8.0f; static float Light = 0.0f; static float index = 0.0f; index += 0.03f; D3DXMatrixLookAtLH(&matView, &D3DXVECTOR3(0.0f, 20.0f, Translation), &D3DXVECTOR3(0.0f, 0.0f, 0.0f), &D3DXVECTOR3(0.0f, 1.0f, 0.0f)); Scene->SetTransform(D3DTS_VIEW, &matView); D3DXMatrixRotationY(&mRotation, index); Scene->SetTransform(D3DTS_WORLD, &mRotation); if(Scene.KeyDown(VE_KEY_UP)) { Translation += 0.3f; } if(Scene.KeyDown(VE_KEY_DOWN)) { Translation -= 0.3f; } if(Scene.KeyDown(VE_KEY_W)) { Light += 0.3f; } if(Scene.KeyDown(VE_KEY_S)) { Light -= 0.3f; } pLight->SetLightPosition(veVector3(0.0f, 0.0f, Light)); g_fTime += fNumSecsPassed; return VE_OK; } veRunGame(); // Der Aufruf von veRunGame() |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 |
class Engine { protected: virtual void Render() = 0; // Abstrakte Funktion, die in der abgeleitende Klasse definiert werden muss virtual void Move(float fTime) = 0; public: virtual ~Engine(){} void RenderLoop(); // Deine MessageLoop }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 |
class Game : public Engine { private: void Render(); // Kannst du die Funktion selber schreiben, genau wie Move void Move(float fTime); public: ~Game(); }; |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Male« (04.12.2010, 20:00)
Werbeanzeige