diff --git a/enginecustom/Modellistclass.cpp b/enginecustom/Modellistclass.cpp index 786d9d5..ae3b3f2 100644 --- a/enginecustom/Modellistclass.cpp +++ b/enginecustom/Modellistclass.cpp @@ -1,4 +1,5 @@ -#include "Modellistclass.h" +#include "modellistclass.h" + ModelListClass::ModelListClass() { @@ -19,17 +20,15 @@ ModelListClass::~ModelListClass() void ModelListClass::Initialize(int numModels) { int i; - - // Store the number of models. - m_modelCount = numModels; + // Store the number of models. + m_modelCount = numModels; // Create a list array of the model information. m_ModelInfoList = new ModelInfoType[m_modelCount]; - - // Seed the random generator with the current time. - srand((unsigned int)time(NULL)); + // Seed the random generator with the current time. + srand((unsigned int)time(NULL)); // Go through all the models and randomly generate the position. for (i = 0; i < m_modelCount; i++) @@ -66,4 +65,4 @@ void ModelListClass::GetData(int index, float& positionX, float& positionY, floa positionY = m_ModelInfoList[index].positionY; positionZ = m_ModelInfoList[index].positionZ; return; -} +} \ No newline at end of file diff --git a/enginecustom/Modellistclass.h b/enginecustom/Modellistclass.h index 0ce3ca4..17dcf10 100644 --- a/enginecustom/Modellistclass.h +++ b/enginecustom/Modellistclass.h @@ -37,4 +37,3 @@ private: }; #endif - diff --git a/enginecustom/Positionclass.cpp b/enginecustom/Positionclass.cpp index 246815f..77dd69e 100644 --- a/enginecustom/Positionclass.cpp +++ b/enginecustom/Positionclass.cpp @@ -1,4 +1,4 @@ -#include "Positionclass.h" +#include "positionclass.h" PositionClass::PositionClass() { diff --git a/enginecustom/Positionclass.h b/enginecustom/Positionclass.h index 2e5702e..7ba78e8 100644 --- a/enginecustom/Positionclass.h +++ b/enginecustom/Positionclass.h @@ -30,4 +30,4 @@ private: float m_leftTurnSpeed, m_rightTurnSpeed; }; -#endif +#endif \ No newline at end of file diff --git a/enginecustom/applicationclass.cpp b/enginecustom/applicationclass.cpp index 539bb69..f94cb59 100644 --- a/enginecustom/applicationclass.cpp +++ b/enginecustom/applicationclass.cpp @@ -24,6 +24,10 @@ ApplicationClass::ApplicationClass() m_FpsString = 0; m_NormalMapShader = 0; m_SpecMapShader = 0; + m_RenderCountString = 0; + m_ModelList = 0; + m_Position = 0; + m_Frustum = 0; } @@ -41,7 +45,7 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd) { char mouseString1[32], mouseString2[32], mouseString3[32]; char testString1[32], testString2[32], testString3[32]; - char modelFilename[128], textureFilename1[128], textureFilename2[128], textureFilename3[128]; + char modelFilename[128], textureFilename1[128], textureFilename2[128], textureFilename3[128], renderString[32]; char bitmapFilename[128]; char spriteFilename[128]; char fpsString[32]; @@ -73,6 +77,8 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd) // Set the initial position of the camera. m_Camera->SetPosition(0.0f, 0.0f, -12.0f); m_Camera->SetRotation(0.0f, 0.0f, 0.0f); + m_Camera->Render(); + m_Camera->GetViewMatrix(m_baseViewMatrix); // Create and initialize the specular map shader object. m_SpecMapShader = new SpecMapShaderClass; @@ -167,15 +173,6 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd) return false; } - // Create and initialize the timer object. - m_Timer = new TimerClass; - - result = m_Timer->Initialize(); - if (!result) - { - return false; - } - // Set the initial mouse strings. strcpy_s(mouseString1, "Mouse X: 0"); strcpy_s(mouseString2, "Mouse Y: 0"); @@ -301,6 +298,56 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd) return false; } + // Create and initialize the font shader object. + m_FontShader = new FontShaderClass; + + result = m_FontShader->Initialize(m_Direct3D->GetDevice(), hwnd); + if (!result) + { + MessageBox(hwnd, L"Could not initialize the font shader object.", L"Error", MB_OK); + return false; + } + + // Create and initialize the font object. + m_Font = new FontClass; + + result = m_Font->Initialize(m_Direct3D->GetDevice(), m_Direct3D->GetDeviceContext(), 0); + if (!result) + { + return false; + } + + // Set the initial render count string. + strcpy_s(renderString, "Render Count: 0"); + + // Create and initialize the text object for the render count string. + m_RenderCountString = new TextClass; + + result = m_RenderCountString->Initialize(m_Direct3D->GetDevice(), m_Direct3D->GetDeviceContext(), screenWidth, screenHeight, 32, m_Font, renderString, 10, 10, 1.0f, 1.0f, 1.0f); + if (!result) + { + return false; + } + + // Create and initialize the model list object. + m_ModelList = new ModelListClass; + m_ModelList->Initialize(25); + + // Create and initialize the timer object. + m_Timer = new TimerClass; + + result = m_Timer->Initialize(); + if (!result) + { + return false; + } + + // Create the position class object. + m_Position = new PositionClass; + + // Create the frustum class object. + m_Frustum = new FrustumClass; + // Create and initialize the fps object. m_Fps = new FpsClass(); @@ -326,6 +373,36 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd) void ApplicationClass::Shutdown() { + // Release the frustum class object. + if (m_Frustum) + { + delete m_Frustum; + m_Frustum = 0; + } + + // Release the position object. + if (m_Position) + { + delete m_Position; + m_Position = 0; + } + + // Release the model list object. + if (m_ModelList) + { + m_ModelList->Shutdown(); + delete m_ModelList; + m_ModelList = 0; + } + + // Release the text objects for the render count string. + if (m_RenderCountString) + { + m_RenderCountString->Shutdown(); + delete m_RenderCountString; + m_RenderCountString = 0; + } + // Release the text objects for the mouse strings. if (m_MouseStrings) { @@ -496,7 +573,8 @@ void ApplicationClass::Shutdown() bool ApplicationClass::Frame(InputClass* Input) { int mouseX, mouseY; - bool result, mouseDown; + bool result, mouseDown, keyDown; + float rotationY; float frameTime; static float rotation = 360.0f; @@ -504,12 +582,42 @@ bool ApplicationClass::Frame(InputClass* Input) static float y = 3.f; static float z = 0.f; + // Update the system stats. + m_Timer->Frame(); + + // Get the current frame time. + frameTime = m_Timer->GetTime(); + // Check if the user pressed escape and wants to exit the application. if (Input->IsEscapePressed()) { return false; } + // Set the frame time for calculating the updated position. + m_Position->SetFrameTime(m_Timer->GetTime()); + + // Check if the left or right arrow key has been pressed, if so rotate the camera accordingly. + keyDown = Input->IsLeftArrowPressed(); + m_Position->TurnLeft(keyDown); + + keyDown = Input->IsRightArrowPressed(); + m_Position->TurnRight(keyDown); + + // Get the current view point rotation. + m_Position->GetRotation(rotationY); + + // Set the rotation of the camera. + m_Camera->SetRotation(0.0f, rotationY, 0.0f); + m_Camera->Render(); + + // Render the graphics scene. + result = Render(rotation, x, y, z); + if (!result) + { + return false; + } + // Update the frames per second each frame. result = UpdateFps(); if (!result) @@ -553,30 +661,24 @@ bool ApplicationClass::Frame(InputClass* Input) return false; } - // Obtenez la position de la souris - Input->GetMouseLocation(mouseX, mouseY); + //// Obtenez la position de la souris + //Input->GetMouseLocation(mouseX, mouseY); - // Calculez la distance parcourue par la souris depuis le dernier frame - float deltaX = mouseX - m_previousMouseX; - float deltaY = mouseY - m_previousMouseY; + //// Calculez la distance parcourue par la souris depuis le dernier frame + //float deltaX = mouseX - m_previousMouseX; + //float deltaY = mouseY - m_previousMouseY; - // Mettez à jour les positions précédentes de la souris - m_previousMouseX = mouseX; - m_previousMouseY = mouseY; + //// Mettez à jour les positions précédentes de la souris + //m_previousMouseX = mouseX; + //m_previousMouseY = mouseY; - // Utilisez deltaX et deltaY pour ajuster la rotation de la caméra - float rotationSpeed = 0.1f; // Ajustez cette valeur pour changer la vitesse de rotation - float rotationX = m_Camera->GetRotation().x + deltaY * rotationSpeed; - float rotationY = m_Camera->GetRotation().y + deltaX * rotationSpeed; + //// Utilisez deltaX et deltaY pour ajuster la rotation de la caméra + //float rotationSpeed = 0.1f; // Ajustez cette valeur pour changer la vitesse de rotation + //float rotationX = m_Camera->GetRotation().x + deltaY * rotationSpeed; + //float rotationY = m_Camera->GetRotation().y + deltaX * rotationSpeed; - // Mettez à jour la rotation de la caméra - m_Camera->SetRotation(rotationX, rotationY, 0.0f); - - // Update the system stats. - m_Timer->Frame(); - - // Get the current frame time. - frameTime = m_Timer->GetTime(); + //// Mettez à jour la rotation de la caméra + //m_Camera->SetRotation(rotationX, rotationY, 0.0f); // Update the sprite object using the frame time. m_Sprite->Update(frameTime); @@ -588,9 +690,10 @@ bool ApplicationClass::Frame(InputClass* Input) bool ApplicationClass::Render(float rotation, float x, float y, float z) { XMMATRIX worldMatrix, viewMatrix, orthoMatrix, projectionMatrix, rotateMatrix, translateMatrix, scaleMatrix, srMatrix; + float positionX, positionY, positionZ, radius; XMFLOAT4 diffuseColor[4], lightPosition[4]; - int i; - bool result; + int modelCount, renderCount, i; + bool result, renderModel; // Clear the buffers to begin the scene. m_Direct3D->BeginScene(0.0f, 0.0f, 0.0f, 1.0f); @@ -604,14 +707,86 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z) m_Direct3D->GetProjectionMatrix(projectionMatrix); m_Direct3D->GetOrthoMatrix(orthoMatrix); + // Get the light properties. + for (i = 0; i < m_numLights; i++) + { + // Create the diffuse color array from the four light colors. + diffuseColor[i] = m_Lights[i].GetDiffuseColor(); + + // Create the light position array from the four light positions. + lightPosition[i] = m_Lights[i].GetPosition(); + } + + // Construct the frustum. + m_Frustum->ConstructFrustum(viewMatrix, projectionMatrix, SCREEN_DEPTH); + + // Get the number of models that will be rendered. + modelCount = m_ModelList->GetModelCount(); + + // Initialize the count of models that have been rendered. + renderCount = 0; + + // Go through all the models and render them only if they can be seen by the camera view. + for (i = 0; i < modelCount; i++) + { + // Get the position and color of the sphere model at this index. + m_ModelList->GetData(i, positionX, positionY, positionZ); + + // Set the radius of the sphere to 1.0 since this is already known. + radius = 1.0f; + + // Check if the sphere model is in the view frustum. + renderModel = m_Frustum->CheckSphere(positionX, positionY, positionZ, radius); + + // If it can be seen then render it, if not skip this model and check the next sphere. + if (renderModel) + { + // Move the model to the location it should be rendered at. + worldMatrix = XMMatrixTranslation(positionX, positionY, positionZ); + + // Render the model using the light shader. + m_Model->Render(m_Direct3D->GetDeviceContext()); + + result = m_LightShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, + m_Model->GetTexture(0), diffuseColor, lightPosition); + if (!result) + { + return false; + } + + // Since this model was rendered then increase the count for this frame. + renderCount++; + } + } + + // Update the render count text. + result = UpdateRenderCountString(renderCount); + if (!result) + { + return false; + } + // Disable the Z buffer and enable alpha blending for 2D rendering. m_Direct3D->TurnZBufferOff(); m_Direct3D->EnableAlphaBlending(); + // Reset the world matrix. + m_Direct3D->GetWorldMatrix(worldMatrix); + + // Render the render count text string using the font shader. + m_RenderCountString->Render(m_Direct3D->GetDeviceContext()); + + result = m_FontShader->Render(m_Direct3D->GetDeviceContext(), m_RenderCountString->GetIndexCount(), worldMatrix, m_baseViewMatrix, orthoMatrix, + m_Font->GetTexture(), m_RenderCountString->GetPixelColor()); + if (!result) + { + return false; + } + // Render the fps text string using the font shader. m_FpsString->Render(m_Direct3D->GetDeviceContext()); - result = m_FontShader->Render(m_Direct3D->GetDeviceContext(), m_FpsString->GetIndexCount(), worldMatrix, viewMatrix, orthoMatrix, + result = m_FontShader->Render(m_Direct3D->GetDeviceContext(), m_FpsString->GetIndexCount(), worldMatrix, m_baseViewMatrix, orthoMatrix, m_Font->GetTexture(), m_FpsString->GetPixelColor()); if (!result) { @@ -621,7 +796,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z) // Render the first text string using the font shader. m_TextString1->Render(m_Direct3D->GetDeviceContext()); - result = m_FontShader->Render(m_Direct3D->GetDeviceContext(), m_TextString1->GetIndexCount(), worldMatrix, viewMatrix, orthoMatrix, + result = m_FontShader->Render(m_Direct3D->GetDeviceContext(), m_TextString1->GetIndexCount(), worldMatrix, m_baseViewMatrix, orthoMatrix, m_Font->GetTexture(), m_TextString1->GetPixelColor()); if (!result) { @@ -631,7 +806,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z) // Render the second text string using the font shader. m_TextString2->Render(m_Direct3D->GetDeviceContext()); - result = m_FontShader->Render(m_Direct3D->GetDeviceContext(), m_TextString2->GetIndexCount(), worldMatrix, viewMatrix, orthoMatrix, + result = m_FontShader->Render(m_Direct3D->GetDeviceContext(), m_TextString2->GetIndexCount(), worldMatrix, m_baseViewMatrix, orthoMatrix, m_Font->GetTexture(), m_TextString2->GetPixelColor()); if (!result) { @@ -641,7 +816,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z) // Render the second text string using the font shader. m_TextString3->Render(m_Direct3D->GetDeviceContext()); - result = m_FontShader->Render(m_Direct3D->GetDeviceContext(), m_TextString3->GetIndexCount(), worldMatrix, viewMatrix, orthoMatrix, + result = m_FontShader->Render(m_Direct3D->GetDeviceContext(), m_TextString3->GetIndexCount(), worldMatrix, m_baseViewMatrix, orthoMatrix, m_Font->GetTexture(), m_TextString3->GetPixelColor()); if (!result) { @@ -653,7 +828,7 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z) { m_MouseStrings[i].Render(m_Direct3D->GetDeviceContext()); - result = m_FontShader->Render(m_Direct3D->GetDeviceContext(), m_MouseStrings[i].GetIndexCount(), worldMatrix, viewMatrix, orthoMatrix, + result = m_FontShader->Render(m_Direct3D->GetDeviceContext(), m_MouseStrings[i].GetIndexCount(), worldMatrix, m_baseViewMatrix, orthoMatrix, m_Font->GetTexture(), m_MouseStrings[i].GetPixelColor()); if (!result) { @@ -691,26 +866,16 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z) return false; } - // Get the light properties. - for (i = 0; i < m_numLights; i++) - { - // Create the diffuse color array from the four light colors. - diffuseColor[i] = m_Lights[i].GetDiffuseColor(); + //scaleMatrix = XMMatrixScaling(0.75f, 0.75f, 0.75f); // Build the scaling matrix. + //rotateMatrix = XMMatrixRotationY(rotation); // Build the rotation matrix. + //translateMatrix = XMMatrixTranslation(x, y, z); // Build the translation matrix. - // Create the light position array from the four light positions. - lightPosition[i] = m_Lights[i].GetPosition(); - } + //// Multiply the scale, rotation, and translation matrices together to create the final world transformation matrix. + //srMatrix = XMMatrixMultiply(scaleMatrix, rotateMatrix); + //worldMatrix = XMMatrixMultiply(srMatrix, translateMatrix); - scaleMatrix = XMMatrixScaling(0.75f, 0.75f, 0.75f); // Build the scaling matrix. - rotateMatrix = XMMatrixRotationY(rotation); // Build the rotation matrix. - translateMatrix = XMMatrixTranslation(x, y, z); // Build the translation matrix. - - // Multiply the scale, rotation, and translation matrices together to create the final world transformation matrix. - srMatrix = XMMatrixMultiply(scaleMatrix, rotateMatrix); - worldMatrix = XMMatrixMultiply(srMatrix, translateMatrix); - - // Render the model using the multitexture shader. - m_Model->Render(m_Direct3D->GetDeviceContext()); + //// Render the model using the multitexture shader. + //m_Model->Render(m_Direct3D->GetDeviceContext()); // Lighting, utilise plusieurs lights donc Multiple Points Lighting //result = m_LightShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, m_Model->GetTexture(0), @@ -752,52 +917,52 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z) // return false; //} - //Specular Mapping - result = m_SpecMapShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, - m_Model->GetTexture(0), m_Model->GetTexture(1), m_Model->GetTexture(2), m_Light->GetDirection(), m_Light->GetDiffuseColor(), - m_Camera->GetPosition(), m_Light->GetSpecularColor(), m_Light->GetSpecularPower()); - if (!result) - { - return false; - } + ////Specular Mapping + //result = m_SpecMapShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, + // m_Model->GetTexture(0), m_Model->GetTexture(1), m_Model->GetTexture(2), m_Light->GetDirection(), m_Light->GetDiffuseColor(), + // m_Camera->GetPosition(), m_Light->GetSpecularColor(), m_Light->GetSpecularPower()); + //if (!result) + //{ + // return false; + //} - scaleMatrix = XMMatrixScaling(1.0f, 1.0f, 1.0f); // Build the scaling matrix. - rotateMatrix = XMMatrixRotationY(40); // Build the rotation matrix. - translateMatrix = XMMatrixTranslation(0, -2.0f, -10.0f); // Build the translation matrix. + //scaleMatrix = XMMatrixScaling(1.0f, 1.0f, 1.0f); // Build the scaling matrix. + //rotateMatrix = XMMatrixRotationY(40); // Build the rotation matrix. + //translateMatrix = XMMatrixTranslation(0, -2.0f, -10.0f); // Build the translation matrix. - // Multiply the scale, rotation, and translation matrices together to create the final world transformation matrix. - srMatrix = XMMatrixMultiply(scaleMatrix, rotateMatrix); - worldMatrix = XMMatrixMultiply(srMatrix, translateMatrix); + //// Multiply the scale, rotation, and translation matrices together to create the final world transformation matrix. + //srMatrix = XMMatrixMultiply(scaleMatrix, rotateMatrix); + //worldMatrix = XMMatrixMultiply(srMatrix, translateMatrix); - // Render the model using the multitexture shader. - m_Model->Render(m_Direct3D->GetDeviceContext()); + //// Render the model using the multitexture shader. + //m_Model->Render(m_Direct3D->GetDeviceContext()); - //Normal Mapping - result = m_NormalMapShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, - m_Model->GetTexture(0), m_Model->GetTexture(1), m_Light->GetDirection(), m_Light->GetDiffuseColor()); - if (!result) - { - return false; - } + ////Normal Mapping + //result = m_NormalMapShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, + // m_Model->GetTexture(0), m_Model->GetTexture(1), m_Light->GetDirection(), m_Light->GetDiffuseColor()); + //if (!result) + //{ + // return false; + //} - scaleMatrix = XMMatrixScaling(1.0f, 1.0f, 1.0f); // Build the scaling matrix. - rotateMatrix = XMMatrixRotationY(40); // Build the rotation matrix. - translateMatrix = XMMatrixTranslation(0, 5.0f, -10.0f); // Build the translation matrix. + //scaleMatrix = XMMatrixScaling(1.0f, 1.0f, 1.0f); // Build the scaling matrix. + //rotateMatrix = XMMatrixRotationY(40); // Build the rotation matrix. + //translateMatrix = XMMatrixTranslation(0, 5.0f, -10.0f); // Build the translation matrix. - // Multiply the scale, rotation, and translation matrices together to create the final world transformation matrix. - srMatrix = XMMatrixMultiply(scaleMatrix, rotateMatrix); - worldMatrix = XMMatrixMultiply(srMatrix, translateMatrix); + //// Multiply the scale, rotation, and translation matrices together to create the final world transformation matrix. + //srMatrix = XMMatrixMultiply(scaleMatrix, rotateMatrix); + //worldMatrix = XMMatrixMultiply(srMatrix, translateMatrix); - // Render the model using the multitexture shader. - m_Model->Render(m_Direct3D->GetDeviceContext()); + //// Render the model using the multitexture shader. + //m_Model->Render(m_Direct3D->GetDeviceContext()); - //Normal Mapping - result = m_NormalMapShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, - m_Model->GetTexture(0), m_Model->GetTexture(1), m_Light->GetDirection(), m_Light->GetDiffuseColor()); - if (!result) - { - return false; - } + ////Normal Mapping + //result = m_NormalMapShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix, + // m_Model->GetTexture(0), m_Model->GetTexture(1), m_Light->GetDirection(), m_Light->GetDiffuseColor()); + //if (!result) + //{ + // return false; + //} // Enable the Z buffer and disable alpha blending now that 2D rendering is complete. m_Direct3D->TurnZBufferOn(); @@ -823,7 +988,7 @@ bool ApplicationClass::UpdateMouseStrings(int mouseX, int mouseY, bool mouseDown strcat_s(finalString, tempString); // Update the sentence vertex buffer with the new string information. - result = m_MouseStrings[0].UpdateText(m_Direct3D->GetDeviceContext(), m_Font, finalString, 10, 10, 1.0f, 1.0f, 1.0f); + result = m_MouseStrings[0].UpdateText(m_Direct3D->GetDeviceContext(), m_Font, finalString, 10, 50, 1.0f, 1.0f, 1.0f); if (!result) { return false; @@ -837,7 +1002,7 @@ bool ApplicationClass::UpdateMouseStrings(int mouseX, int mouseY, bool mouseDown strcat_s(finalString, tempString); // Update the sentence vertex buffer with the new string information. - result = m_MouseStrings[1].UpdateText(m_Direct3D->GetDeviceContext(), m_Font, finalString, 10, 35, 1.0f, 1.0f, 1.0f); + result = m_MouseStrings[1].UpdateText(m_Direct3D->GetDeviceContext(), m_Font, finalString, 10, 75, 1.0f, 1.0f, 1.0f); if (!result) { return false; @@ -854,7 +1019,7 @@ bool ApplicationClass::UpdateMouseStrings(int mouseX, int mouseY, bool mouseDown } // Update the sentence vertex buffer with the new string information. - result = m_MouseStrings[2].UpdateText(m_Direct3D->GetDeviceContext(), m_Font, finalString, 10, 60, 1.0f, 1.0f, 1.0f); + result = m_MouseStrings[2].UpdateText(m_Direct3D->GetDeviceContext(), m_Font, finalString, 10, 100, 1.0f, 1.0f, 1.0f); } bool ApplicationClass::UpdateFps() @@ -924,5 +1089,28 @@ bool ApplicationClass::UpdateFps() return false; } + return true; +} + +bool ApplicationClass::UpdateRenderCountString(int renderCount) +{ + char tempString[16], finalString[32]; + bool result; + + + // Convert the render count integer to string format. + sprintf_s(tempString, "%d", renderCount); + + // Setup the render count string. + strcpy_s(finalString, "Render Count: "); + strcat_s(finalString, tempString); + + // Update the sentence vertex buffer with the new string information. + result = m_RenderCountString->UpdateText(m_Direct3D->GetDeviceContext(), m_Font, finalString, 10, 30, 1.0f, 1.0f, 1.0f); + if (!result) + { + return false; + } + return true; } \ No newline at end of file diff --git a/enginecustom/applicationclass.h b/enginecustom/applicationclass.h index 373660c..9d45353 100644 --- a/enginecustom/applicationclass.h +++ b/enginecustom/applicationclass.h @@ -24,9 +24,9 @@ #include "inputclass.h" #include "normalmapshaderclass.h" #include "specmapshaderclass.h" -#include "Frustrumclass.h" -#include "Positionclass.h" -#include "Modellistclass.h" +#include "modellistclass.h" +#include "positionclass.h" +#include "frustumclass.h" ///////////// @@ -86,6 +86,7 @@ private: ModelListClass* m_ModelList; PositionClass* m_Position; FrustumClass* m_Frustum; + XMMATRIX m_baseViewMatrix; float m_previousMouseX; float m_previousMouseY; }; diff --git a/enginecustom/enginecustom.vcxproj b/enginecustom/enginecustom.vcxproj index 0f26008..788bba6 100644 --- a/enginecustom/enginecustom.vcxproj +++ b/enginecustom/enginecustom.vcxproj @@ -29,17 +29,17 @@ - + - + - + @@ -58,16 +58,16 @@ - + - + - + diff --git a/enginecustom/enginecustom.vcxproj.filters b/enginecustom/enginecustom.vcxproj.filters index de7c42b..253e47f 100644 --- a/enginecustom/enginecustom.vcxproj.filters +++ b/enginecustom/enginecustom.vcxproj.filters @@ -99,13 +99,13 @@ Fichiers sources - + Fichiers sources - + Fichiers sources - + Fichiers sources @@ -179,13 +179,13 @@ Fichiers d%27en-tête - + Fichiers d%27en-tête - + Fichiers d%27en-tête - + Fichiers d%27en-tête diff --git a/enginecustom/Frustrumclass.cpp b/enginecustom/frustumclass.cpp similarity index 97% rename from enginecustom/Frustrumclass.cpp rename to enginecustom/frustumclass.cpp index a88ca5d..4f69feb 100644 --- a/enginecustom/Frustrumclass.cpp +++ b/enginecustom/frustumclass.cpp @@ -1,7 +1,4 @@ -//////////////////////////////////////////////////////////////////////////////// -// Filename: frustumclass.cpp -//////////////////////////////////////////////////////////////////////////////// -#include "Frustrumclass.h" +#include "frustumclass.h" FrustumClass::FrustumClass() @@ -18,7 +15,6 @@ FrustumClass::~FrustumClass() { } - void FrustumClass::ConstructFrustum(XMMATRIX viewMatrix, XMMATRIX projectionMatrix, float screenDepth) { XMMATRIX finalMatrix; @@ -298,3 +294,4 @@ bool FrustumClass::CheckRectangle(float xCenter, float yCenter, float zCenter, f return true; } + diff --git a/enginecustom/Frustrumclass.h b/enginecustom/frustumclass.h similarity index 99% rename from enginecustom/Frustrumclass.h rename to enginecustom/frustumclass.h index 593de6d..6d3e3d0 100644 --- a/enginecustom/Frustrumclass.h +++ b/enginecustom/frustumclass.h @@ -1,6 +1,7 @@ #ifndef _FRUSTUMCLASS_H_ #define _FRUSTUMCLASS_H_ + ////////////// // INCLUDES // //////////////