GL color buffer should be cleared at the start of the frame

This commit is contained in:
Dan Paulat 2024-05-26 23:11:02 -05:00
parent 8bd6838438
commit 37a850a778
4 changed files with 20 additions and 0 deletions

View file

@ -136,6 +136,14 @@ void GlContext::Initialize()
p->InitializeGL();
}
void GlContext::StartFrame()
{
auto& gl = p->gl_;
gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
gl.glClear(GL_COLOR_BUFFER_BIT);
}
std::size_t GlContext::Impl::GetShaderKey(
std::initializer_list<std::pair<GLenum, std::string>> shaders)
{

View file

@ -38,6 +38,7 @@ public:
GLuint GetTextureAtlas();
void Initialize();
void StartFrame();
private:
class Impl;

View file

@ -1406,6 +1406,8 @@ void MapWidget::paintGL()
p->frameDraws_++;
p->context_->StartFrame();
// Handle hotkey updates
p->HandleHotkeyUpdates();

View file

@ -1,4 +1,5 @@
#include <scwx/qt/ui/imgui_debug_widget.hpp>
#include <scwx/qt/gl/gl.hpp>
#include <scwx/qt/manager/font_manager.hpp>
#include <scwx/qt/model/imgui_context_model.hpp>
@ -59,6 +60,8 @@ public:
ImGuiContext* currentContext_;
gl::OpenGLFunctions gl_;
std::set<ImGuiContext*> renderedSet_ {};
bool imGuiRendererInitialized_ {false};
std::uint64_t imGuiFontsBuildCount_ {};
@ -103,6 +106,9 @@ void ImGuiDebugWidget::initializeGL()
{
makeCurrent();
// Initialize OpenGL Functions
p->gl_.initializeOpenGLFunctions();
// Initialize ImGui OpenGL3 backend
ImGui::SetCurrentContext(p->context_);
ImGui_ImplOpenGL3_Init();
@ -113,6 +119,9 @@ void ImGuiDebugWidget::initializeGL()
void ImGuiDebugWidget::paintGL()
{
p->gl_.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
p->gl_.glClear(GL_COLOR_BUFFER_BIT);
ImGui::SetCurrentContext(p->currentContext_);
// Lock ImGui font atlas prior to new ImGui frame