From 6423a32a2e90c0d1248aa57ddc57d1168c1559be Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Sun, 19 Oct 2025 12:04:45 +0800 Subject: [PATCH] [Fix] (MG_Backend/DirectGLES|MG_State/BufferState): Fix crash. --- MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp | 3 +-- MobileGL/MG_Impl/GLImpl/Drawing/GL_Drawing.cpp | 2 +- MobileGL/MG_State/GLState/BufferState/BufferObject.cpp | 4 +++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp b/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp index 6956cf1b..9c6b441a 100644 --- a/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp +++ b/MobileGL/MG_Backend/DirectGLES/DirectGLES.cpp @@ -27,7 +27,6 @@ namespace MobileGL::MG_Backend::DirectGLES { buffersToSync.push_back(bufferObject); } } - const auto& possibleIBO = currentVAOObject->GetIndexBufferBindingSlot().GetBoundObject(); if (possibleIBO) { buffersToSync.push_back(possibleIBO); @@ -37,7 +36,7 @@ namespace MobileGL::MG_Backend::DirectGLES { for (auto& bufferObject : buffersToSync) { const auto& backendBufferIt = g_backendBufferObjects.find(bufferObject); SharedPtr backendBufferObject; - if (backendBufferIt != g_backendBufferObjects.end()) { + if (backendBufferIt == g_backendBufferObjects.end()) { backendBufferObject = MakeShared(); g_backendBufferObjects[bufferObject] = backendBufferObject; } else { diff --git a/MobileGL/MG_Impl/GLImpl/Drawing/GL_Drawing.cpp b/MobileGL/MG_Impl/GLImpl/Drawing/GL_Drawing.cpp index 7add7aa2..6e33643e 100644 --- a/MobileGL/MG_Impl/GLImpl/Drawing/GL_Drawing.cpp +++ b/MobileGL/MG_Impl/GLImpl/Drawing/GL_Drawing.cpp @@ -1,8 +1,8 @@ #include "GL_Drawing.h" #include #include -#include #include +#include namespace MobileGL { namespace MG_Impl::GLImpl { diff --git a/MobileGL/MG_State/GLState/BufferState/BufferObject.cpp b/MobileGL/MG_State/GLState/BufferState/BufferObject.cpp index 63652396..56064340 100644 --- a/MobileGL/MG_State/GLState/BufferState/BufferObject.cpp +++ b/MobileGL/MG_State/GLState/BufferState/BufferObject.cpp @@ -1,11 +1,13 @@ #include "BufferObject.h" +#include "MG_Util/Types.h" namespace MobileGL { namespace MG_State { namespace GLState { BufferObject::BufferObject() : m_id(0), m_size(0), m_usage(BufferUsage::StaticDraw), m_isMapped(false), - m_mappingAccess(BufferMappingAccessBit::Null), m_dirtyRange({0, 0}), m_mappedRange({0, 0}) {} + m_mappingAccess(BufferMappingAccessBit::Null), m_dirtyRange({0, 0}), m_mappedRange({0, 0}), + m_dataPtr(MakeShared()) {} void BufferObject::Resize(SizeT size) { m_size = size;