UniformStateIndex Pass::uniformStateIndex(const char* name) const { if (!m_program) { logError("Cannot retrieve uniform state indices with no program"); return UniformStateIndex(); } size_t index = 0, offset = 0; for (const Uniform& uniform : m_program->m_uniforms) { if (!uniform.isShared()) { if (uniform.name() == name) return UniformStateIndex(uint16(index), uint16(offset)); offset += uniformTypeSizes[uniform.type()]; } index++; } return UniformStateIndex(); }
UniformStateIndex ProgramState::uniformStateIndex(const char* name) const { if (!m_program) { logError("Cannot retrieve uniform state indices with no program"); return UniformStateIndex(); } uint offset = 0; for (uint i = 0; i < m_program->uniformCount(); i++) { GL::Uniform& uniform = m_program->uniform(i); if (uniform.isShared()) continue; if (uniform.name() == name) return UniformStateIndex(i, offset); offset += uniform.elementCount(); } return UniformStateIndex(); }