Fixed black screen and stretched strings after changing display settings in game.

This commit is contained in:
MontyTRC89 2024-10-29 06:01:03 +01:00
parent 2ded586f1a
commit 5f974935b4
6 changed files with 80 additions and 10 deletions

View file

@ -122,11 +122,11 @@ pickups, and Lara herself (see also <a href="../2 classes/Objects.LaraObject.htm
<td class="summary">Shatter item.</td>
</tr>
<tr>
<td class="name" ><a href="#Moveable:SetEffect">Moveable:SetEffect(effect, timeout)</a></td>
<td class="name" ><a href="#Moveable:SetEffect">Moveable:SetEffect(effect[, timeout])</a></td>
<td class="summary">Set effect to moveable</td>
</tr>
<tr>
<td class="name" ><a href="#Moveable:SetCustomEffect">Moveable:SetCustomEffect(Color1, Color2, timeout)</a></td>
<td class="name" ><a href="#Moveable:SetCustomEffect">Moveable:SetCustomEffect(Color1, Color2[, timeout])</a></td>
<td class="summary">Set custom colored burn effect to moveable</td>
</tr>
<tr>
@ -227,10 +227,14 @@ pickups, and Lara herself (see also <a href="../2 classes/Objects.LaraObject.htm
<td class="summary">Determine whether the moveable is active or not</td>
</tr>
<tr>
<td class="name" ><a href="#Moveable:GetJointPosition">Moveable:GetJointPosition(index)</a></td>
<td class="name" ><a href="#Moveable:GetJointPosition">Moveable:GetJointPosition(index[, offset])</a></td>
<td class="summary">Get the object's joint position</td>
</tr>
<tr>
<td class="name" ><a href="#Moveable:GetJointRotation">Moveable:GetJointRotation(index)</a></td>
<td class="summary">Get the object's joint rotation</td>
</tr>
<tr>
<td class="name" ><a href="#Moveable:GetRotation">Moveable:GetRotation()</a></td>
<td class="summary">Get the moveable's rotation</td>
</tr>
@ -496,7 +500,7 @@ most can just be ignored (see usage).
</dd>
<dt>
<a name = "Moveable:SetEffect"></a>
<strong>Moveable:SetEffect(effect, timeout)</strong>
<strong>Moveable:SetEffect(effect[, timeout])</strong>
</dt>
<dd>
Set effect to moveable
@ -511,7 +515,8 @@ most can just be ignored (see usage).
</li>
<li><span class="parameter">timeout</span>
<span class="types"><span class="type">float</span></span>
time (in seconds) after which effect turns off (optional).
time (in seconds) after which effect turns off.
(<em>optional</em>)
</li>
</ul>
@ -522,7 +527,7 @@ most can just be ignored (see usage).
</dd>
<dt>
<a name = "Moveable:SetCustomEffect"></a>
<strong>Moveable:SetCustomEffect(Color1, Color2, timeout)</strong>
<strong>Moveable:SetCustomEffect(Color1, Color2[, timeout])</strong>
</dt>
<dd>
Set custom colored burn effect to moveable
@ -541,7 +546,8 @@ most can just be ignored (see usage).
</li>
<li><span class="parameter">timeout</span>
<span class="types"><span class="type">float</span></span>
time (in seconds) after which effect turns off (optional).
time (in seconds) after which effect turns off.
(<em>optional</em>)
</li>
</ul>
@ -1098,7 +1104,7 @@ shiva:SetObjectID(TEN.Objects.ObjID.BIGMEDI_ITEM)</pre>
</dd>
<dt>
<a name = "Moveable:GetJointPosition"></a>
<strong>Moveable:GetJointPosition(index)</strong>
<strong>Moveable:GetJointPosition(index[, offset])</strong>
</dt>
<dd>
Get the object's joint position
@ -1111,13 +1117,46 @@ shiva:SetObjectID(TEN.Objects.ObjID.BIGMEDI_ITEM)</pre>
<span class="types"><span class="type">int</span></span>
of a joint to get position
</li>
<li><span class="parameter">offset</span>
<span class="types"><a class="type" href="../3 primitive classes/Vec3.html#">Vec3</a></span>
a pre-rotation offset to the joint
(<em>optional</em>)
</li>
</ul>
<h3>Returns:</h3>
<ol>
<span class="types"><a class="type" href="../3 primitive classes/Vec3.html#">Vec3</a></span>
a copy of the moveable's position
a copy of the moveable's joint position
</ol>
</dd>
<dt>
<a name = "Moveable:GetJointRotation"></a>
<strong>Moveable:GetJointRotation(index)</strong>
</dt>
<dd>
Get the object's joint rotation
<h3>Parameters:</h3>
<ul>
<li><span class="parameter">index</span>
<span class="types"><span class="type">int</span></span>
of a joint to get rotation
</li>
</ul>
<h3>Returns:</h3>
<ol>
<span class="types"><a class="type" href="../3 primitive classes/Rotation.html#">Rotation</a></span>
a calculated copy of the moveable's joint rotation
</ol>
@ -1361,7 +1400,10 @@ shiva:SetObjectID(TEN.Objects.ObjID.BIGMEDI_ITEM)</pre>
<h3>Usage:</h3>
<ul>
<pre class="example">LevelFuncs.objCollided = <span class="keyword">function</span>(obj1, obj2)
<pre class="example"><span class="comment">-- obj1 is the collision moveable
</span><span class="comment">-- obj2 is the collider moveable
</span>
LevelFuncs.objCollided = <span class="keyword">function</span>(obj1, obj2)
<span class="global">print</span>(obj1:GetName() .. <span class="string">" collided with "</span> .. obj2:GetName())
<span class="keyword">end</span>
baddy:SetOnCollidedWithObject(LevelFuncs.objCollided)</pre>

View file

@ -625,6 +625,8 @@ namespace TEN::Gui
g_Renderer.ChangeScreenResolution(CurrentSettings.Configuration.ScreenWidth, CurrentSettings.Configuration.ScreenHeight,
CurrentSettings.Configuration.EnableWindowedMode);
g_Renderer.SetGraphicsSettingsChanged();
MenuToDisplay = fromPauseMenu ? Menu::Pause : Menu::Options;
SelectedOption = fromPauseMenu ? 1 : 0;
}

View file

@ -419,4 +419,9 @@ namespace TEN::Renderer
_context->RSSetScissorRects(1, rects);
}
void Renderer::SetGraphicsSettingsChanged()
{
_graphicsSettingsChanged = true;
}
}

View file

@ -384,6 +384,8 @@ namespace TEN::Renderer
// High framerate.
float _interpolationFactor = 0.0f;
bool _graphicsSettingsChanged = false;
// Private functions
void ApplySMAA(RenderTarget2D* renderTarget, RenderView& view);
void ApplyFXAA(RenderTarget2D* renderTarget, RenderView& view);
@ -666,6 +668,8 @@ namespace TEN::Renderer
void SetPostProcessStrength(float strength);
Vector3 GetPostProcessTint();
void SetPostProcessTint(Vector3 color);
void SetGraphicsSettingsChanged();
};
extern Renderer g_Renderer;

View file

@ -2156,6 +2156,8 @@ namespace TEN::Renderer
void Renderer::DumpGameScene()
{
RenderScene(&_dumpScreenRenderTarget, false, _gameCamera);
_graphicsSettingsChanged = false;
}
void Renderer::DrawItems(RenderView& view, RendererPass rendererPass)

View file

@ -1138,9 +1138,24 @@ namespace TEN::Renderer
void Renderer::RenderInventory()
{
if (_graphicsSettingsChanged)
{
_currentGameCamera = RenderView(&Camera, Camera.Roll, Camera.Fov, 32, BLOCK(g_GameFlow->GetLevel(CurrentLevel)->GetFarView()), g_Configuration.ScreenWidth, g_Configuration.ScreenHeight);
_gameCamera = RenderView(&Camera, Camera.Roll, Camera.Fov, 32, BLOCK(g_GameFlow->GetLevel(CurrentLevel)->GetFarView()), g_Configuration.ScreenWidth, g_Configuration.ScreenHeight);
Camera.DisableInterpolation = true;
DumpGameScene();
}
_context->ClearDepthStencilView(_backBuffer.DepthStencilView.Get(), D3D11_CLEAR_STENCIL | D3D11_CLEAR_DEPTH, 1.0f, 0);
_context->ClearRenderTargetView(_backBuffer.RenderTargetView.Get(), Colors::Black);
// Reset GPU state.
SetBlendMode(BlendMode::Opaque, true);
SetDepthState(DepthState::Write, true);
SetCullMode(CullMode::CounterClockwise, true);
RenderInventoryScene(&_backBuffer, &_dumpScreenRenderTarget, 0.5f);
_swapChain->Present(1, 0);