mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-09-12 06:08:30 +09:00
[Perf] (MG_Backend/DirectGLES): Skip IBO binding for VA when not dirty.
This commit is contained in:
@@ -283,15 +283,19 @@ namespace MobileGL::MG_Backend::DirectGLES {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto& indexBufferBinding = stateVAOObject->GetIndexBufferBindingSlot().GetBoundObject();
|
Uint16 currentIndexBufferVersion = stateVAOObject->GetIndexBufferBindingSlot().GetVersion();
|
||||||
if (indexBufferBinding) {
|
if (currentIndexBufferVersion != m_syncedIndexBufferVersion) {
|
||||||
const auto& backendBufferIt = BufferImpl::g_backendBufferObjects.find(indexBufferBinding);
|
const auto& indexBufferBinding = stateVAOObject->GetIndexBufferBindingSlot().GetBoundObject();
|
||||||
if (backendBufferIt != BufferImpl::g_backendBufferObjects.end()) {
|
if (indexBufferBinding) {
|
||||||
const auto& backendBufferObject = backendBufferIt->second;
|
const auto& backendBufferIt = BufferImpl::g_backendBufferObjects.find(indexBufferBinding);
|
||||||
backendBufferObject->Bind(GL_ELEMENT_ARRAY_BUFFER);
|
if (backendBufferIt != BufferImpl::g_backendBufferObjects.end()) {
|
||||||
} else {
|
const auto& backendBufferObject = backendBufferIt->second;
|
||||||
MGLOG_W("No backend buffer found for index buffer binding, cannot bind index buffer.");
|
backendBufferObject->Bind(GL_ELEMENT_ARRAY_BUFFER);
|
||||||
|
} else {
|
||||||
|
MGLOG_W("No backend buffer found for index buffer binding, cannot bind index buffer.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
m_syncedIndexBufferVersion = currentIndexBufferVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
m_syncedAttributeVersions = allAttributeVersions;
|
m_syncedAttributeVersions = allAttributeVersions;
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ namespace MobileGL::MG_Backend::DirectGLES {
|
|||||||
|
|
||||||
Uint m_backendVAOId = 0;
|
Uint m_backendVAOId = 0;
|
||||||
Bool m_isInitialized = false;
|
Bool m_isInitialized = false;
|
||||||
|
Uint16 m_syncedIndexBufferVersion = 0;
|
||||||
Array<MG_State::GLState::VertexAttributeVersion, MG_State::GLState::VertexArrayObject::MAX_VERTEX_ATTRIBS>
|
Array<MG_State::GLState::VertexAttributeVersion, MG_State::GLState::VertexArrayObject::MAX_VERTEX_ATTRIBS>
|
||||||
m_syncedAttributeVersions;
|
m_syncedAttributeVersions;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user