From 731281eb61ce230df245cdb3ab989eec1baf6bbc Mon Sep 17 00:00:00 2001 From: BZLZHH Date: Fri, 31 Oct 2025 14:40:14 +0800 Subject: [PATCH] [Feat] (MG_State/VertexArrayState): Implement default VAO at index 0. --- .../GLState/VertexArrayState/VertexArrayState.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/MobileGL/MG_State/GLState/VertexArrayState/VertexArrayState.cpp b/MobileGL/MG_State/GLState/VertexArrayState/VertexArrayState.cpp index bed9084a..6f3f58bf 100644 --- a/MobileGL/MG_State/GLState/VertexArrayState/VertexArrayState.cpp +++ b/MobileGL/MG_State/GLState/VertexArrayState/VertexArrayState.cpp @@ -3,7 +3,14 @@ namespace MobileGL { namespace MG_State { namespace GLState { - VertexArrayState::VertexArrayState() : m_indexGenerator(1024, 1) {} + VertexArrayState::VertexArrayState() : m_indexGenerator(1024, 1) { + // Generate default VAO at index 0, which is not valid in core profile, but still remains for + // compatibility reasons. + m_indexGenerator.Insert(0); + auto defaultVAO = MakeShared(); + m_vertexArrays.push_back(defaultVAO); + m_boundVertexArray = defaultVAO; + } SharedPtr VertexArrayState::GetVertexArrayObject(Uint index) { if (index >= m_vertexArrays.size()) @@ -20,12 +27,6 @@ namespace MobileGL { } void VertexArrayState::Bind(Uint index) { - if (index == 0) { - // FIXME: should we make a dummy VAO at index 0? - m_boundVertexArray = nullptr; - return; - } - m_boundVertexArray = GetVertexArrayObject(index); }