From 74509ae0a3c698192cfe788351598ae81c365117 Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Tue, 3 Feb 2026 21:07:14 +0800 Subject: [PATCH] [Perf] (MG_Backend/DirectGLES): No need to use shared_ptr for g_boundVertexBufferObject. --- MobileGL/MG_Backend/DirectGLES/Managers.cpp | 10 +++------- MobileGL/MG_Backend/DirectGLES/Managers.h | 5 ++--- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.cpp b/MobileGL/MG_Backend/DirectGLES/Managers.cpp index 2597e434..ce504f61 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.cpp +++ b/MobileGL/MG_Backend/DirectGLES/Managers.cpp @@ -177,25 +177,21 @@ namespace MobileGL::MG_Backend::DirectGLES { } } - SharedPtr BackendBufferObject::GetSharedPtr() { - return shared_from_this(); - } - void BackendBufferObject::Bind(GLenum target) { #ifdef TRACY_ENABLE ZoneScopedC(TRACY_ZONECOLOR_BACKEND); #endif if (target == GL_ARRAY_BUFFER) { - if (g_boundVertexBufferObject.get() == this) { + if (g_boundVertexBufferObject == this) { return; } - g_boundVertexBufferObject = GetSharedPtr(); + g_boundVertexBufferObject = this; } MG_External::GLES::glBindBuffer(target, m_backendBufferId); } UnorderedMap, SharedPtr> g_backendBufferObjects; - SharedPtr g_boundVertexBufferObject; + BackendBufferObject* g_boundVertexBufferObject = nullptr; } // namespace BufferImpl namespace VertexArrayImpl { diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.h b/MobileGL/MG_Backend/DirectGLES/Managers.h index ca17d17a..5ae73d4d 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.h +++ b/MobileGL/MG_Backend/DirectGLES/Managers.h @@ -18,13 +18,12 @@ namespace MobileGL::MG_Backend::DirectGLES { namespace BufferImpl { const GLenum TempBufferTarget = GL_ARRAY_BUFFER; - class BackendBufferObject : public std::enable_shared_from_this { + class BackendBufferObject { public: BackendBufferObject(); void SyncToBackend(SharedPtr& stateBufferObject); Uint GetBackendBufferId() { return m_backendBufferId; } void Bind(GLenum target = TempBufferTarget); - SharedPtr GetSharedPtr(); private: void SyncToBackend_glBufferData(SharedPtr& stateBufferObject); @@ -37,7 +36,7 @@ namespace MobileGL::MG_Backend::DirectGLES { Bool m_isInitialized = false; }; - extern SharedPtr g_boundVertexBufferObject; + extern BackendBufferObject* g_boundVertexBufferObject; extern UnorderedMap, SharedPtr> g_backendBufferObjects; } // namespace BufferImpl