[Feat] (MG_State/Program): GetAttribLocation

This commit is contained in:
2025-08-16 23:10:12 +08:00
parent 6416788856
commit a072c2fc70
2 changed files with 14 additions and 2 deletions
@@ -215,7 +215,14 @@ namespace MobileGL {
}
GLint GetAttribLocation_State(GLuint program, const GLchar* name) {
THROW_UNIMPL_EXCEPTION;
auto programObject = TryToGetProgramObject(program);
if (!programObject)
return -1;
if (strncmp(name, "gl_", 3) == 0)
return -1;
if (!programObject->GetLinkStatus())
return -1;
return programObject->GetAttributeLocation(name);
}
void GetProgramiv_State(GLuint program, GLenum pname, GLint* params) {
@@ -33,6 +33,11 @@ namespace MobileGL {
return m_uniformNames[index];
}
Int GetAttributeLocation(const String& name) {
const auto it = std::find(m_attribs.begin(), m_attribs.end(), name);
return (it == m_attribs.end()) ? -1 : std::distance(m_attribs.begin(), it);
}
Bool GetDeleteStatus() const { return m_deleteStatus; }
Bool GetLinkStatus() const { return m_linkStatus; }
Bool GetValidateStatus() const { return m_validateStatus; }
@@ -76,7 +81,7 @@ namespace MobileGL {
String m_infoLog;
Bool m_deleteStatus = false;
Bool m_linkStatus = true;
Bool m_linkStatus = false;
Bool m_validateStatus = true;
};
} // namespace GLState