diff --git a/MobileGL/MG_Backend/DirectGLES/Managers.cpp b/MobileGL/MG_Backend/DirectGLES/Managers.cpp index 05dfa17e..1a054688 100644 --- a/MobileGL/MG_Backend/DirectGLES/Managers.cpp +++ b/MobileGL/MG_Backend/DirectGLES/Managers.cpp @@ -280,6 +280,10 @@ namespace MobileGL::MG_Backend::DirectGLES { MG_Util::ConvertDataTypeToGLEnum(attrib.Type), attrib.Stride, (const void*)attrib.Offset); } + + if (needsSyncFormat) { + MG_External::GLES::glVertexAttribDivisor(attribIndex, attrib.Divisor); + } continue; // No need to set format again } @@ -919,21 +923,24 @@ namespace MobileGL::MG_Backend::DirectGLES { } #if MOBILEGL_LOG_ACTIVE_LEVEL <= MOBILEGL_LOG_LEVEL_DEBUG else { - MGLOG_D("%s: Skipped SyncAttachmentObject(target=%s, frontendObj=(%dx%dx%d, %s), backendAtt=%s), version = %u", __func__, - MG_Util::ConvertGLEnumToString(glFBOTarget).c_str(), - attachmentObject.GetSize().x(), attachmentObject.GetSize().y(), attachmentObject.GetSize().z(), + MGLOG_D("%s: Skipped SyncAttachmentObject(target=%s, frontendObj=(%dx%dx%d, %s), backendAtt=%s), " + "version = %u", + __func__, MG_Util::ConvertGLEnumToString(glFBOTarget).c_str(), + attachmentObject.GetSize().x(), attachmentObject.GetSize().y(), + attachmentObject.GetSize().z(), MG_Util::ConvertFramebufferAttachmentTypeToString(frontendType).c_str(), MG_Util::ConvertGLEnumToString(glBackendAttachment).c_str(), - m_syncedFrontendAttachmentVersions[i] - ); + m_syncedFrontendAttachmentVersions[i]); GLint objectType = GL_NONE; - MG_External::GLES::glGetFramebufferAttachmentParameteriv(glFBOTarget, glBackendAttachment, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &objectType); - MOBILEGL_ASSERT( - (objectType == GL_NONE) || - (attachmentObject.IsTexture() && objectType == GL_TEXTURE) || (attachmentObject.IsRenderbuffer() && objectType == GL_RENDERBUFFER), - "Attachment type not match!"); + MG_External::GLES::glGetFramebufferAttachmentParameteriv( + glFBOTarget, glBackendAttachment, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &objectType); + MOBILEGL_ASSERT((objectType == GL_NONE) || + (attachmentObject.IsTexture() && objectType == GL_TEXTURE) || + (attachmentObject.IsRenderbuffer() && objectType == GL_RENDERBUFFER), + "Attachment type not match!"); GLint objectName = 0; - MG_External::GLES::glGetFramebufferAttachmentParameteriv(glFBOTarget, glBackendAttachment, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &objectName); + MG_External::GLES::glGetFramebufferAttachmentParameteriv( + glFBOTarget, glBackendAttachment, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME, &objectName); // Verify that the backend object's name and parameters match the frontend attachment state if (attachmentObject.IsTexture()) { const auto& textureObject = attachmentObject.GetTexture(); @@ -942,7 +949,8 @@ namespace MobileGL::MG_Backend::DirectGLES { "No backend texture found while framebuffer reports texture attachment."); GLuint backendTexId = backendTextureIt->second->GetBackendTextureId(); MOBILEGL_ASSERT(static_cast(backendTexId) == objectName, - "Attachment texture name mismatch between GLES (%d) and backend texture object (%d), frontend texture object ID=%d.", + "Attachment texture name mismatch between GLES (%d) and backend texture object " + "(%d), frontend texture object ID=%d.", objectName, backendTexId, textureObject->GetExternalIndex()); GLint texLevel = 0; @@ -953,8 +961,9 @@ namespace MobileGL::MG_Backend::DirectGLES { } else if (attachmentObject.IsRenderbuffer()) { const auto& renderbufferObject = attachmentObject.GetRenderbuffer(); auto backendRboIt = RenderbufferImpl::g_backendRenderbufferObjects.find(renderbufferObject); - MOBILEGL_ASSERT(backendRboIt != RenderbufferImpl::g_backendRenderbufferObjects.end(), - "No backend renderbuffer found while framebuffer reports renderbuffer attachment."); + MOBILEGL_ASSERT( + backendRboIt != RenderbufferImpl::g_backendRenderbufferObjects.end(), + "No backend renderbuffer found while framebuffer reports renderbuffer attachment."); GLuint backendRboId = backendRboIt->second->GetBackendRenderbufferId(); MOBILEGL_ASSERT(static_cast(backendRboId) == objectName, "Attachment renderbuffer name mismatch between GLES and state object.");