Minor update - viewport window tweak
This commit is contained in:
@@ -120,6 +120,7 @@ public:
|
||||
|
||||
void SetWindowSize(ImVec2 size) { windowSize = size; };
|
||||
ImVec2 GetWindowSize() const { return windowSize; };
|
||||
float GetAspectRatio() const { return (float)m_screenWidth / (float)m_screenHeight; };
|
||||
|
||||
Physics* GetPhysics() const { return m_Physics; };
|
||||
|
||||
|
@@ -2,36 +2,50 @@
|
||||
|
||||
ApplicationClass::ApplicationClass() : m_ShouldQuit(false)
|
||||
{
|
||||
m_Direct3D = 0;
|
||||
m_Camera = 0;
|
||||
m_Model = 0;
|
||||
m_Bitmap = 0;
|
||||
m_Sprite = 0;
|
||||
m_Timer = 0;
|
||||
m_MouseStrings = 0;
|
||||
m_FontShader = 0;
|
||||
m_Font = 0;
|
||||
m_Fps = 0;
|
||||
m_FpsString = 0;
|
||||
m_ShaderManager = 0;
|
||||
m_RenderCountString = 0;
|
||||
m_ModelList = 0;
|
||||
m_Position = 0;
|
||||
m_DisplayPlane = 0;
|
||||
m_BathModel = 0;
|
||||
m_WaterModel = 0;
|
||||
m_Light = 0;
|
||||
m_RefractionTexture = 0;
|
||||
m_ReflectionTexture = 0;
|
||||
m_Direct3D = nullptr;
|
||||
m_Camera = nullptr;
|
||||
m_Model = nullptr;
|
||||
m_Bitmap = nullptr;
|
||||
m_Sprite = nullptr;
|
||||
m_Timer = nullptr;
|
||||
m_MouseStrings = nullptr;
|
||||
m_FontShader = nullptr;
|
||||
m_Font = nullptr;
|
||||
m_Fps = nullptr;
|
||||
m_FpsString = nullptr;
|
||||
m_ShaderManager = nullptr;
|
||||
m_RenderCountString = nullptr;
|
||||
m_ModelList = nullptr;
|
||||
m_Position = nullptr;
|
||||
m_DisplayPlane = nullptr;
|
||||
m_BathModel = nullptr;
|
||||
m_WaterModel = nullptr;
|
||||
m_Light = nullptr;
|
||||
m_RefractionTexture = nullptr;
|
||||
m_ReflectionTexture = nullptr;
|
||||
m_SceneTexture = nullptr;
|
||||
m_Physics = 0;
|
||||
m_Physics = nullptr;
|
||||
m_cubes.clear();
|
||||
m_terrainChunk.clear();
|
||||
m_object.clear();
|
||||
m_RenderQueues.clear();
|
||||
m_Skybox.clear();
|
||||
m_Lights.clear();
|
||||
m_SunLight = 0;
|
||||
m_SunLight = nullptr;
|
||||
m_swapChain = nullptr;
|
||||
m_GroundModel = nullptr;
|
||||
m_WallModel = nullptr;
|
||||
m_hwnd = nullptr;
|
||||
m_baseViewMatrix = XMMatrixIdentity();
|
||||
m_RenderTexture = nullptr;
|
||||
m_screenWidth = 0;
|
||||
m_screenHeight = 0;
|
||||
m_numLights = 0;
|
||||
m_waterHeight = 0.0f;
|
||||
m_waterTranslation = 0.0f;
|
||||
TrueLightPosition = XMFLOAT3(0.0f, 0.0f, 0.0f);
|
||||
m_LightModel = nullptr;
|
||||
m_renderCount = 0;
|
||||
}
|
||||
|
||||
ApplicationClass::~ApplicationClass()
|
||||
@@ -82,7 +96,7 @@ bool ApplicationClass::Initialize(int screenWidth, int screenHeight, HWND hwnd)
|
||||
return false;
|
||||
}
|
||||
|
||||
result = m_Direct3D->Initialize(screenWidth, screenHeight, VSYNC_ENABLED, hwnd, FULL_SCREEN, SCREEN_DEPTH, SCREEN_NEAR);
|
||||
result = m_Direct3D->Initialize(m_screenWidth, m_screenHeight, VSYNC_ENABLED, hwnd, FULL_SCREEN, SCREEN_DEPTH, SCREEN_NEAR);
|
||||
if (!result)
|
||||
{
|
||||
Logger::Get().Log("Could not initialize Direct3D", __FILE__, __LINE__, Logger::LogLevel::Error);
|
||||
@@ -728,14 +742,7 @@ bool ApplicationClass::Frame(InputClass* Input)
|
||||
// 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);
|
||||
|
||||
m_Position->TurnMouse(deltaX, deltaY, 0.1f, rightMouseDown);
|
||||
m_Position->TurnMouse((float)deltaX, (float)deltaY, 0.1f, rightMouseDown);
|
||||
|
||||
// Get the current view point rotation.
|
||||
m_Position->GetRotation(rotationY, rotationX);
|
||||
@@ -853,9 +860,6 @@ bool ApplicationClass::RenderRefractionToTexture()
|
||||
|
||||
// Generate the view matrix based on the camera's position.
|
||||
m_Camera->Render();
|
||||
|
||||
// Get the world, view, and projection matrices from the camera and d3d objects.
|
||||
worldMatrix = m_Direct3D->GetWorldMatrix();
|
||||
m_Camera->GetViewMatrix(viewMatrix);
|
||||
projectionMatrix = m_Direct3D->GetProjectionMatrix();
|
||||
|
||||
@@ -894,11 +898,8 @@ bool ApplicationClass::RenderRefractionToTexture()
|
||||
|
||||
bool ApplicationClass::RenderReflectionToTexture()
|
||||
{
|
||||
XMMATRIX worldMatrix, reflectionViewMatrix, projectionMatrix;
|
||||
XMFLOAT4 diffuseColor[4], getDirection[4], ambientColor[4];
|
||||
bool result;
|
||||
|
||||
|
||||
XMMATRIX reflectionViewMatrix;
|
||||
|
||||
// Set the render target to be the reflection render to texture and clear it.
|
||||
m_ReflectionTexture->SetRenderTarget(m_Direct3D->GetDeviceContext());
|
||||
m_ReflectionTexture->ClearRenderTarget(m_Direct3D->GetDeviceContext(), 0.0f, 0.0f, 0.0f, 1.0f);
|
||||
@@ -908,12 +909,7 @@ bool ApplicationClass::RenderReflectionToTexture()
|
||||
|
||||
// Get the camera reflection view matrix instead of the normal view matrix.
|
||||
m_Camera->GetReflectionViewMatrix(reflectionViewMatrix);
|
||||
|
||||
// Get the world and projection matrices from the d3d object.
|
||||
worldMatrix = m_Direct3D->GetWorldMatrix();
|
||||
projectionMatrix = m_Direct3D->GetProjectionMatrix();
|
||||
|
||||
|
||||
|
||||
// Reset the render target back to the original back buffer and not the render to texture anymore. And reset the viewport back to the original.
|
||||
m_Direct3D->SetBackBufferRenderTarget();
|
||||
m_Direct3D->ResetViewport();
|
||||
@@ -932,9 +928,7 @@ bool ApplicationClass::RenderSceneToTexture(float rotation)
|
||||
|
||||
// Set the position of the camera for viewing the cube.
|
||||
m_Camera->Render();
|
||||
|
||||
// Get the matrices.
|
||||
worldMatrix = m_Direct3D->GetWorldMatrix();
|
||||
|
||||
m_Camera->GetViewMatrix(viewMatrix);
|
||||
m_RenderTexture->GetProjectionMatrix(projectionMatrix);
|
||||
|
||||
@@ -961,10 +955,9 @@ bool ApplicationClass::RenderSceneToTexture(float rotation)
|
||||
bool ApplicationClass::Render(float rotation, float x, float y, float z, float textureTranslation)
|
||||
{
|
||||
XMMATRIX worldMatrix, viewMatrix, orthoMatrix, projectionMatrix, rotateMatrix, translateMatrix, scaleMatrix, srMatrix, reflectionMatrix;
|
||||
float positionX, positionY, positionZ, radius;
|
||||
XMFLOAT4 diffuseColor[4], lightPosition[4], getDirection[4], ambientColor[4];
|
||||
int modelCount, renderCount, i;
|
||||
bool result, renderModel;
|
||||
XMFLOAT4 diffuseColor[4], lightPosition[4], ambientColor[4];
|
||||
int i;
|
||||
bool result;
|
||||
float blendAmount;
|
||||
|
||||
// Set the blending amount to 10%.
|
||||
@@ -996,21 +989,15 @@ bool ApplicationClass::Render(float rotation, float x, float y, float z, float t
|
||||
}
|
||||
|
||||
// Redimensionner la texture de rendu si n<>cessaire
|
||||
if (m_SceneTexture->GetTextureWidth() != windowSize.x || m_SceneTexture->GetTextureHeight() != windowSize.y)
|
||||
if ((float)m_SceneTexture->GetTextureWidth() != windowSize.x || (float)m_SceneTexture->GetTextureHeight() != windowSize.y)
|
||||
{
|
||||
m_SceneTexture->Shutdown();
|
||||
m_SceneTexture->Initialize(m_Direct3D->GetDevice(), windowSize.x, windowSize.y, SCREEN_DEPTH, SCREEN_NEAR, 1);
|
||||
m_SceneTexture->Initialize(m_Direct3D->GetDevice(), (int)windowSize.x, (int)windowSize.y, SCREEN_DEPTH, SCREEN_NEAR, 1);
|
||||
}
|
||||
|
||||
m_SceneTexture->SetRenderTarget(m_Direct3D->GetDeviceContext());
|
||||
m_SceneTexture->ClearRenderTarget(m_Direct3D->GetDeviceContext(), 0.0f, 0.0f, 0.0f, 1.0f);
|
||||
|
||||
//Add the 3 first value of the first light position to the TrueLightPosition XMFLOAT3
|
||||
positionX = lightPosition[0].x;
|
||||
positionY = lightPosition[0].y;
|
||||
positionZ = lightPosition[0].z;
|
||||
XMFLOAT3 TrueLightPosition = XMFLOAT3(positionX, positionY, positionZ);
|
||||
|
||||
scaleMatrix = XMMatrixScaling(0.5f, 0.5f, 0.5f); // Build the scaling matrix.
|
||||
rotateMatrix = XMMatrixRotationY(rotation); // Build the rotation matrix.
|
||||
translateMatrix = XMMatrixTranslation(x, y, z); // Build the translation matrix.
|
||||
@@ -1394,7 +1381,6 @@ void ApplicationClass::GenerateTerrain()
|
||||
Logger::Get().Log("Generating terrain", __FILE__, __LINE__);
|
||||
|
||||
char modelFilename[128];
|
||||
bool result;
|
||||
|
||||
XMMATRIX scaleMatrix;
|
||||
float scaleX, scaleY, scaleZ;
|
||||
|
@@ -626,6 +626,19 @@ void imguiManager::WidgetRenderWindow(ApplicationClass* app, ImVec2 availableSiz
|
||||
ImGui::Begin("Render Window");
|
||||
|
||||
windowSize = ImGui::GetContentRegionAvail();
|
||||
|
||||
// Get the aspect ratio of the scene in app
|
||||
float aspectRatio = app->GetAspectRatio();
|
||||
// calculate the size of the window
|
||||
if (windowSize.x / windowSize.y > aspectRatio)
|
||||
{
|
||||
windowSize.x = windowSize.y * aspectRatio;
|
||||
}
|
||||
else
|
||||
{
|
||||
windowSize.y = windowSize.x / aspectRatio;
|
||||
}
|
||||
|
||||
app->SetWindowSize(windowSize);
|
||||
|
||||
// Assurez-vous que la texture est valide
|
||||
|
Reference in New Issue
Block a user