Fix viewpoint buffer not getting cleared when in the menus

This commit is contained in:
Magnus Norddahl 2022-07-28 13:46:47 +02:00 committed by Christoph Oelckers
parent aae85a1b91
commit 742ae8c907
4 changed files with 10 additions and 2 deletions

View file

@ -484,6 +484,7 @@ void OpenGLFrameBuffer::SetSaveBuffers(bool yes)
void OpenGLFrameBuffer::BeginFrame() void OpenGLFrameBuffer::BeginFrame()
{ {
SetViewportRects(nullptr); SetViewportRects(nullptr);
mViewpoints->Clear();
if (GLRenderer != nullptr) if (GLRenderer != nullptr)
GLRenderer->BeginFrame(); GLRenderer->BeginFrame();
} }

View file

@ -369,6 +369,7 @@ void OpenGLFrameBuffer::WaitForCommands(bool finish)
void OpenGLFrameBuffer::BeginFrame() void OpenGLFrameBuffer::BeginFrame()
{ {
SetViewportRects(nullptr); SetViewportRects(nullptr);
mViewpoints->Clear();
if (GLRenderer != nullptr) if (GLRenderer != nullptr)
GLRenderer->BeginFrame(); GLRenderer->BeginFrame();
} }

View file

@ -117,11 +117,16 @@ int HWViewpointBuffer::SetViewpoint(FRenderState &di, HWViewpointUniforms *vp)
void HWViewpointBuffer::Clear() void HWViewpointBuffer::Clear()
{ {
bool needNewPipeline = mUploadIndex > 0; // Clear might be called multiple times before any actual rendering
mUploadIndex = 0; mUploadIndex = 0;
mClipPlaneInfo.Clear(); mClipPlaneInfo.Clear();
mPipelinePos++; if (needNewPipeline)
mPipelinePos %= mPipelineNbr; {
mPipelinePos++;
mPipelinePos %= mPipelineNbr;
}
mBuffer = mBufferPipeline[mPipelinePos]; mBuffer = mBufferPipeline[mPipelinePos];
} }

View file

@ -419,6 +419,7 @@ TArray<uint8_t> VulkanFrameBuffer::GetScreenshotBuffer(int &pitch, ESSType &colo
void VulkanFrameBuffer::BeginFrame() void VulkanFrameBuffer::BeginFrame()
{ {
SetViewportRects(nullptr); SetViewportRects(nullptr);
mViewpoints->Clear();
mCommands->BeginFrame(); mCommands->BeginFrame();
mTextureManager->BeginFrame(); mTextureManager->BeginFrame();
mScreenBuffers->BeginFrame(screen->mScreenViewport.width, screen->mScreenViewport.height, screen->mSceneViewport.width, screen->mSceneViewport.height); mScreenBuffers->BeginFrame(screen->mScreenViewport.width, screen->mScreenViewport.height, screen->mSceneViewport.width, screen->mSceneViewport.height);