From d4b32bf79f1586b5683e79f329bbfea254b3cbea Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sun, 14 Jun 2020 21:13:22 +0200 Subject: [PATCH] - fully synchronized the backend code with GZDoom. The camera texture code couldn't be done earlier. --- source/common/rendering/gl/gl_framebuffer.cpp | 1 - source/common/rendering/gl/gl_renderer.cpp | 15 +++++---------- source/glbackend/glbackend.cpp | 1 + 3 files changed, 6 insertions(+), 11 deletions(-) diff --git a/source/common/rendering/gl/gl_framebuffer.cpp b/source/common/rendering/gl/gl_framebuffer.cpp index f2a66ef43..b116e9577 100644 --- a/source/common/rendering/gl/gl_framebuffer.cpp +++ b/source/common/rendering/gl/gl_framebuffer.cpp @@ -265,7 +265,6 @@ void OpenGLFrameBuffer::Swap() FHardwareTexture::UnbindAll(); gl_RenderState.ClearLastMaterial(); mDebug->Update(); - mVertexData->Reset(); } //========================================================================== diff --git a/source/common/rendering/gl/gl_renderer.cpp b/source/common/rendering/gl/gl_renderer.cpp index e876b1720..305ee0a97 100644 --- a/source/common/rendering/gl/gl_renderer.cpp +++ b/source/common/rendering/gl/gl_renderer.cpp @@ -160,16 +160,11 @@ void FGLRenderer::EndOffscreen() void FGLRenderer::BindToFrameBuffer(FTexture *tex) { - auto pBaseLayer = tex->SystemTextures.GetHardwareTexture(0, false); - auto BaseLayer = pBaseLayer ? (OpenGLRenderer::FHardwareTexture*)pBaseLayer : nullptr; - - if (BaseLayer == nullptr) - { - // must create the hardware texture first - BaseLayer = new FHardwareTexture(4); - BaseLayer->CreateTexture(nullptr, tex->GetWidth(), tex->GetHeight(), 15, false, "Camtex"); - tex->SystemTextures.AddHardwareTexture(0, false, BaseLayer); - } + auto BaseLayer = static_cast(tex->GetHardwareTexture(0, 0)); + // must create the hardware texture first + BaseLayer->BindOrCreate(tex, 0, 0, 0, 0); + FHardwareTexture::Unbind(0); + gl_RenderState.ClearLastMaterial(); BaseLayer->BindToFrameBuffer(tex->GetWidth(), tex->GetHeight()); } diff --git a/source/glbackend/glbackend.cpp b/source/glbackend/glbackend.cpp index aa3a6b5e6..26670fb0d 100644 --- a/source/glbackend/glbackend.cpp +++ b/source/glbackend/glbackend.cpp @@ -453,6 +453,7 @@ void videoShowFrame(int32_t w) Draw2D(&twodpsp, *screen->RenderState()); // draws the weapon sprites }); screen->Update(); + screen->mVertexData->Reset(); // After finishing the frame, reset everything for the next frame. This needs to be done better. screen->BeginFrame(); bool useSSAO = (gl_ssao != 0);