[Perf] (MG_Backend/DirectGLES): No need to use shared_ptr for g_boundVertexBufferObject.

This commit is contained in:
BZLZHH
2026-02-03 21:07:14 +08:00
parent f0ab82ea2a
commit 74509ae0a3
2 changed files with 5 additions and 10 deletions
+3 -7
View File
@@ -177,25 +177,21 @@ namespace MobileGL::MG_Backend::DirectGLES {
}
}
SharedPtr<BackendBufferObject> 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<MG_State::GLState::BufferObject>, SharedPtr<BackendBufferObject>> g_backendBufferObjects;
SharedPtr<BackendBufferObject> g_boundVertexBufferObject;
BackendBufferObject* g_boundVertexBufferObject = nullptr;
} // namespace BufferImpl
namespace VertexArrayImpl {
+2 -3
View File
@@ -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<BackendBufferObject> {
class BackendBufferObject {
public:
BackendBufferObject();
void SyncToBackend(SharedPtr<MG_State::GLState::BufferObject>& stateBufferObject);
Uint GetBackendBufferId() { return m_backendBufferId; }
void Bind(GLenum target = TempBufferTarget);
SharedPtr<BackendBufferObject> GetSharedPtr();
private:
void SyncToBackend_glBufferData(SharedPtr<MG_State::GLState::BufferObject>& stateBufferObject);
@@ -37,7 +36,7 @@ namespace MobileGL::MG_Backend::DirectGLES {
Bool m_isInitialized = false;
};
extern SharedPtr<BackendBufferObject> g_boundVertexBufferObject;
extern BackendBufferObject* g_boundVertexBufferObject;
extern UnorderedMap<SharedPtr<MG_State::GLState::BufferObject>, SharedPtr<BackendBufferObject>>
g_backendBufferObjects;
} // namespace BufferImpl