Пример #1
0
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();
}
Пример #2
0
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();
}