From eb5889af5615b7d5a18d95945c7e29ded80a387c Mon Sep 17 00:00:00 2001 From: goeiecool9999 <7033575+goeiecool9999@users.noreply.github.com> Date: Fri, 5 Sep 2025 12:18:54 +0200 Subject: [PATCH] fix OpenGL bug --- src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp b/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp index 5dd559a3..76f67692 100644 --- a/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp +++ b/src/Cafe/HW/Latte/Renderer/OpenGL/OpenGLRenderer.cpp @@ -205,7 +205,7 @@ ImTextureID OpenGLRenderer::GenerateTexture(const std::vector& data, cons glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glActiveTexture(GL_TEXTURE0); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB8, size.x, size.y, 0, GL_RGB, GL_UNSIGNED_BYTE, data.data()); + glTexImage2D(GL_TEXTURE_2D, 0, GL_SRGB, size.x, size.y, 0, GL_RGB, GL_UNSIGNED_BYTE, data.data()); return (ImTextureID)(uintptr_t)textureId; } @@ -318,8 +318,8 @@ void OpenGLRenderer::Initialize() cemuLog_log(LogType::Force, "ARB_copy_image: {}", (glCopyImageSubData != NULL) ? "available" : "not supported"); cemuLog_log(LogType::Force, "NV_depth_buffer_float: {}", (glDepthRangedNV != NULL) ? "available" : "not supported"); - // display raw fragment shader output, we handle gamma encoding manually. - glDisable(GL_FRAMEBUFFER_SRGB); + // enable framebuffer SRGB support + glEnable(GL_FRAMEBUFFER_SRGB); if (this->m_vendor != GfxVendor::AMD) { @@ -620,9 +620,13 @@ void OpenGLRenderer::DrawBackbufferQuad(LatteTextureView* texView, RendererOutpu glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, useLinearTexFilter ? GL_LINEAR : GL_NEAREST); texViewGL->samplerState.filterMag = 0xFFFFFFFF; + glDisable(GL_FRAMEBUFFER_SRGB); + uint16 indexData[6] = { 0,1,2,3,4,5 }; glDrawRangeElements(GL_TRIANGLES, 0, 5, 6, GL_UNSIGNED_SHORT, indexData); + glEnable(GL_FRAMEBUFFER_SRGB); + // unbind texture texture_bindAndActivate(nullptr, 0);