From d90e35d6305dcdf7af2899e26779f609e2a08576 Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Sun, 26 Oct 2025 09:50:05 +0800 Subject: [PATCH] [Fix] (MG_Backend/DirectGLES): Fix wrong buffer data in sync. --- MobileGL/MG_Backend/DirectGLES/Managers.cpp | 6 +++--- MobileGL/MG_State/GLState/BufferState/BufferObject.cpp | 2 +- MobileGL/MG_State/GLState/BufferState/BufferObject.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.cpp b/MobileGL/MG_Backend/DirectGLES/Managers.cpp index 08d3b13e..847e57b4 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.cpp +++ b/MobileGL/MG_Backend/DirectGLES/Managers.cpp @@ -69,7 +69,7 @@ namespace MobileGL::MG_Backend::DirectGLES { MGLOG_D("Syncing buffer data (glBufferData) for object with ID : %u", m_backendBufferId); - const void* data = stateBufferObject->GetDataReadOnly().get(); + const void* data = stateBufferObject->GetDataReadOnly()->data(); SizeT size = stateBufferObject->GetSize(); GLenum usage = MG_Util::ConvertBufferUsageToGLEnum(stateBufferObject->GetUsage()); @@ -85,7 +85,7 @@ namespace MobileGL::MG_Backend::DirectGLES { MGLOG_D("Syncing buffer sub-data (glBufferSubData) for object with ID : %u", m_backendBufferId); - const void* data = stateBufferObject->GetDataReadOnly().get(); + const void* data = stateBufferObject->GetDataReadOnly()->data(); auto range = stateBufferObject->GetDirtyRange(); // dirty range: [range.start, range.end) @@ -105,7 +105,7 @@ namespace MobileGL::MG_Backend::DirectGLES { void* mappedData = MG_External::GLES::glMapBufferRange( TempBufferTarget, range.start, range.end - range.start, (invalidate ? GL_MAP_INVALIDATE_BUFFER_BIT : 0) | GL_MAP_WRITE_BIT | GL_MAP_UNSYNCHRONIZED_BIT); - const void* data = stateBufferObject->GetDataReadOnly().get(); + const void* data = stateBufferObject->GetDataReadOnly()->data(); if (mappedData) { Memcpy(reinterpret_cast(reinterpret_cast(data) + range.start), mappedData, range.end - range.start); diff --git a/MobileGL/MG_State/GLState/BufferState/BufferObject.cpp b/MobileGL/MG_State/GLState/BufferState/BufferObject.cpp index 56064340..d67ca8cd 100644 --- a/MobileGL/MG_State/GLState/BufferState/BufferObject.cpp +++ b/MobileGL/MG_State/GLState/BufferState/BufferObject.cpp @@ -125,7 +125,7 @@ namespace MobileGL { } } - SharedPtr BufferObject::GetDataReadOnly() const { + const SharedPtr BufferObject::GetDataReadOnly() const { return m_dataPtr; } diff --git a/MobileGL/MG_State/GLState/BufferState/BufferObject.h b/MobileGL/MG_State/GLState/BufferState/BufferObject.h index ab00a280..4adca4ae 100644 --- a/MobileGL/MG_State/GLState/BufferState/BufferObject.h +++ b/MobileGL/MG_State/GLState/BufferState/BufferObject.h @@ -71,7 +71,7 @@ namespace MobileGL { BufferUsage GetUsage() const; Range1D GetDirtyRange() const; Range1D GetMappedRange() const; - SharedPtr GetDataReadOnly() const; + const SharedPtr GetDataReadOnly() const; Flags GetMappingAccess() const; private: