compteur de fps
This commit is contained in:
parent
64d39c8869
commit
0568195aec
@ -18,6 +18,8 @@ ApplicationClass::ApplicationClass()
|
|||||||
m_TextString1 = 0;
|
m_TextString1 = 0;
|
||||||
m_TextString2 = 0;
|
m_TextString2 = 0;
|
||||||
m_TextString3 = 0;
|
m_TextString3 = 0;
|
||||||
|
m_Fps = 0;
|
||||||
|
m_FpsString = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -38,6 +40,7 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd)
|
|||||||
char textureFilename1[128], textureFilename2[128];
|
char textureFilename1[128], textureFilename2[128];
|
||||||
char bitmapFilename[128];
|
char bitmapFilename[128];
|
||||||
char spriteFilename[128];
|
char spriteFilename[128];
|
||||||
|
char fpsString[32];
|
||||||
bool result;
|
bool result;
|
||||||
|
|
||||||
|
|
||||||
@ -218,12 +221,47 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd)
|
|||||||
m_Lights[3].SetDiffuseColor(1.0f, 1.0f, 1.0f, 1.0f); // White
|
m_Lights[3].SetDiffuseColor(1.0f, 1.0f, 1.0f, 1.0f); // White
|
||||||
m_Lights[3].SetPosition(3.0f, 1.0f, -3.0f);
|
m_Lights[3].SetPosition(3.0f, 1.0f, -3.0f);
|
||||||
|
|
||||||
|
// Create and initialize the fps object.
|
||||||
|
m_Fps = new FpsClass();
|
||||||
|
|
||||||
|
m_Fps->Initialize();
|
||||||
|
|
||||||
|
// Set the initial fps and fps string.
|
||||||
|
m_previousFps = -1;
|
||||||
|
strcpy_s(fpsString, "Fps: 0");
|
||||||
|
|
||||||
|
// Create and initialize the text object for the fps string.
|
||||||
|
m_FpsString = new TextClass;
|
||||||
|
|
||||||
|
result = m_FpsString->Initialize(m_Direct3D->GetDevice(), m_Direct3D->GetDeviceContext(), screenWidth, screenHeight, 32, m_Font, fpsString, 10, 10, 0.0f, 1.0f, 0.0f);
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ApplicationClass::Shutdown()
|
void ApplicationClass::Shutdown()
|
||||||
{
|
{
|
||||||
|
// Release the text object for the fps string.
|
||||||
|
if (m_FpsString)
|
||||||
|
{
|
||||||
|
m_FpsString->Shutdown();
|
||||||
|
delete m_FpsString;
|
||||||
|
m_FpsString = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Release the fps object.
|
||||||
|
if (m_Fps)
|
||||||
|
{
|
||||||
|
delete m_Fps;
|
||||||
|
m_Fps = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Release the text string objects.
|
// Release the text string objects.
|
||||||
if (m_TextString3)
|
if (m_TextString3)
|
||||||
{
|
{
|
||||||
@ -359,6 +397,13 @@ bool ApplicationClass::Frame()
|
|||||||
static float z = 0.f;
|
static float z = 0.f;
|
||||||
bool result;
|
bool result;
|
||||||
|
|
||||||
|
// Update the frames per second each frame.
|
||||||
|
result = UpdateFps();
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Update the rotation variable each frame.
|
// Update the rotation variable each frame.
|
||||||
rotation -= 0.0174532925f * 0.1f;
|
rotation -= 0.0174532925f * 0.1f;
|
||||||
if (rotation < 0.0f)
|
if (rotation < 0.0f)
|
||||||
@ -418,6 +463,16 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z)
|
|||||||
m_Direct3D->TurnZBufferOff();
|
m_Direct3D->TurnZBufferOff();
|
||||||
m_Direct3D->EnableAlphaBlending();
|
m_Direct3D->EnableAlphaBlending();
|
||||||
|
|
||||||
|
// 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,
|
||||||
|
m_Font->GetTexture(), m_FpsString->GetPixelColor());
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Render the first text string using the font shader.
|
// Render the first text string using the font shader.
|
||||||
m_TextString1->Render(m_Direct3D->GetDeviceContext());
|
m_TextString1->Render(m_Direct3D->GetDeviceContext());
|
||||||
|
|
||||||
@ -523,6 +578,10 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z)
|
|||||||
// Render the model using the multitexture shader.
|
// Render the model using the multitexture shader.
|
||||||
result = m_MultiTextureShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix,
|
result = m_MultiTextureShader->Render(m_Direct3D->GetDeviceContext(), m_Model->GetIndexCount(), worldMatrix, viewMatrix, projectionMatrix,
|
||||||
m_Model->GetTexture(0), m_Model->GetTexture(1));
|
m_Model->GetTexture(0), m_Model->GetTexture(1));
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// Enable the Z buffer and disable alpha blending now that 2D rendering is complete.
|
// Enable the Z buffer and disable alpha blending now that 2D rendering is complete.
|
||||||
m_Direct3D->TurnZBufferOn();
|
m_Direct3D->TurnZBufferOn();
|
||||||
@ -534,3 +593,72 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ApplicationClass::UpdateFps()
|
||||||
|
{
|
||||||
|
int fps;
|
||||||
|
char tempString[16], finalString[16];
|
||||||
|
float red, green, blue;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
|
||||||
|
// Update the fps each frame.
|
||||||
|
m_Fps->Frame();
|
||||||
|
|
||||||
|
// Get the current fps.
|
||||||
|
fps = m_Fps->GetFps();
|
||||||
|
|
||||||
|
// Check if the fps from the previous frame was the same, if so don't need to update the text string.
|
||||||
|
if (m_previousFps == fps)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store the fps for checking next frame.
|
||||||
|
m_previousFps = fps;
|
||||||
|
|
||||||
|
// Truncate the fps to below 100,000.
|
||||||
|
if (fps > 99999)
|
||||||
|
{
|
||||||
|
fps = 99999;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Convert the fps integer to string format.
|
||||||
|
sprintf_s(tempString, "%d", fps);
|
||||||
|
|
||||||
|
// Setup the fps string.
|
||||||
|
strcpy_s(finalString, "Fps: ");
|
||||||
|
strcat_s(finalString, tempString);
|
||||||
|
|
||||||
|
// If fps is 60 or above set the fps color to green.
|
||||||
|
if (fps >= 60)
|
||||||
|
{
|
||||||
|
red = 0.0f;
|
||||||
|
green = 1.0f;
|
||||||
|
blue = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If fps is below 60 set the fps color to yellow.
|
||||||
|
if (fps < 60)
|
||||||
|
{
|
||||||
|
red = 1.0f;
|
||||||
|
green = 1.0f;
|
||||||
|
blue = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If fps is below 30 set the fps color to red.
|
||||||
|
if (fps < 30)
|
||||||
|
{
|
||||||
|
red = 1.0f;
|
||||||
|
green = 0.0f;
|
||||||
|
blue = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the sentence vertex buffer with the new string information.
|
||||||
|
result = m_FpsString->UpdateText(m_Direct3D->GetDeviceContext(), m_Font, finalString, 10, 10, red, green, blue);
|
||||||
|
if (!result)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
@ -18,6 +18,7 @@
|
|||||||
#include "fontshaderclass.h"
|
#include "fontshaderclass.h"
|
||||||
#include "fontclass.h"
|
#include "fontclass.h"
|
||||||
#include "textclass.h"
|
#include "textclass.h"
|
||||||
|
#include "fpsclass.h"
|
||||||
|
|
||||||
/////////////
|
/////////////
|
||||||
// GLOBALS //
|
// GLOBALS //
|
||||||
@ -44,6 +45,7 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
bool Render(float, float, float, float);
|
bool Render(float, float, float, float);
|
||||||
|
bool UpdateFps();
|
||||||
private:
|
private:
|
||||||
D3DClass* m_Direct3D;
|
D3DClass* m_Direct3D;
|
||||||
CameraClass* m_Camera;
|
CameraClass* m_Camera;
|
||||||
@ -60,6 +62,9 @@ private:
|
|||||||
FontShaderClass* m_FontShader;
|
FontShaderClass* m_FontShader;
|
||||||
FontClass* m_Font;
|
FontClass* m_Font;
|
||||||
TextClass *m_TextString1, *m_TextString2, *m_TextString3;
|
TextClass *m_TextString1, *m_TextString2, *m_TextString3;
|
||||||
|
FpsClass* m_Fps;
|
||||||
|
TextClass* m_FpsString;
|
||||||
|
int m_previousFps;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -27,6 +27,7 @@
|
|||||||
<ClCompile Include="d3dclass.cpp" />
|
<ClCompile Include="d3dclass.cpp" />
|
||||||
<ClCompile Include="fontclass.cpp" />
|
<ClCompile Include="fontclass.cpp" />
|
||||||
<ClCompile Include="fontshaderclass.cpp" />
|
<ClCompile Include="fontshaderclass.cpp" />
|
||||||
|
<ClCompile Include="fpsclass.cpp" />
|
||||||
<ClCompile Include="inputclass.cpp" />
|
<ClCompile Include="inputclass.cpp" />
|
||||||
<ClCompile Include="Lightclass.cpp" />
|
<ClCompile Include="Lightclass.cpp" />
|
||||||
<ClCompile Include="Lightshaderclass.cpp" />
|
<ClCompile Include="Lightshaderclass.cpp" />
|
||||||
@ -48,6 +49,7 @@
|
|||||||
<ClInclude Include="d3dclass.h" />
|
<ClInclude Include="d3dclass.h" />
|
||||||
<ClInclude Include="fontclass.h" />
|
<ClInclude Include="fontclass.h" />
|
||||||
<ClInclude Include="fontshaderclass.h" />
|
<ClInclude Include="fontshaderclass.h" />
|
||||||
|
<ClInclude Include="fpsclass.h" />
|
||||||
<ClInclude Include="inputclass.h" />
|
<ClInclude Include="inputclass.h" />
|
||||||
<ClInclude Include="lightclass.h" />
|
<ClInclude Include="lightclass.h" />
|
||||||
<ClInclude Include="lightshaderclass.h" />
|
<ClInclude Include="lightshaderclass.h" />
|
||||||
|
@ -84,6 +84,9 @@
|
|||||||
<ClCompile Include="Timerclass.cpp">
|
<ClCompile Include="Timerclass.cpp">
|
||||||
<Filter>Fichiers sources</Filter>
|
<Filter>Fichiers sources</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="fpsclass.cpp">
|
||||||
|
<Filter>Fichiers sources</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="applicationclass.h">
|
<ClInclude Include="applicationclass.h">
|
||||||
@ -140,6 +143,9 @@
|
|||||||
<ClInclude Include="Timerclass.h">
|
<ClInclude Include="Timerclass.h">
|
||||||
<Filter>Fichiers d%27en-tête</Filter>
|
<Filter>Fichiers d%27en-tête</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="fpsclass.h">
|
||||||
|
<Filter>Fichiers d%27en-tête</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Image Include="font01.tga">
|
<Image Include="font01.tga">
|
||||||
|
46
enginecustom/fpsclass.cpp
Normal file
46
enginecustom/fpsclass.cpp
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
#include "fpsclass.h"
|
||||||
|
|
||||||
|
|
||||||
|
FpsClass::FpsClass()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FpsClass::FpsClass(const FpsClass& other)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
FpsClass::~FpsClass()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void FpsClass::Initialize()
|
||||||
|
{
|
||||||
|
m_fps = 0;
|
||||||
|
m_count = 0;
|
||||||
|
|
||||||
|
m_startTime = timeGetTime();
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FpsClass::Frame()
|
||||||
|
{
|
||||||
|
m_count++;
|
||||||
|
|
||||||
|
if (timeGetTime() >= (m_startTime + 1000))
|
||||||
|
{
|
||||||
|
m_fps = m_count;
|
||||||
|
m_count = 0;
|
||||||
|
|
||||||
|
m_startTime = timeGetTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int FpsClass::GetFps()
|
||||||
|
{
|
||||||
|
return m_fps;
|
||||||
|
}
|
36
enginecustom/fpsclass.h
Normal file
36
enginecustom/fpsclass.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#ifndef _FPSCLASS_H_
|
||||||
|
#define _FPSCLASS_H_
|
||||||
|
|
||||||
|
|
||||||
|
/////////////
|
||||||
|
// LINKING //
|
||||||
|
/////////////
|
||||||
|
#pragma comment(lib, "winmm.lib")
|
||||||
|
|
||||||
|
|
||||||
|
//////////////
|
||||||
|
// INCLUDES //
|
||||||
|
//////////////
|
||||||
|
#include <windows.h>
|
||||||
|
#include <mmsystem.h>
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Class name: FpsClass
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
class FpsClass
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
FpsClass();
|
||||||
|
FpsClass(const FpsClass&);
|
||||||
|
~FpsClass();
|
||||||
|
|
||||||
|
void Initialize();
|
||||||
|
void Frame();
|
||||||
|
int GetFps();
|
||||||
|
|
||||||
|
private:
|
||||||
|
int m_fps, m_count;
|
||||||
|
unsigned long m_startTime;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
Loading…
x
Reference in New Issue
Block a user