size_t LineStripGeometry::addLineStrip(const Core::Array<Vector3f> &vertices, const Core::Array<Vector3ub> &rgb, float lineWidth) { if (vertices.empty() || vertices.size() != rgb.size()) return InvalidIndex; size_t result = m_lineStarts.size(); m_lineStarts.push_back(static_cast<unsigned int>(m_vertices.size())); m_lineWidths.push_back(lineWidth); Array<Vector3ub>::const_iterator colorIter(rgb.begin()); Array<Vector3f>::const_iterator vertIter(vertices.begin()); Array<Vector3f>::const_iterator vertEnd(vertices.end()); m_vertices.reserve(m_vertices.size() + vertices.size()); Vector4ub tmpColor(0, 0, 0, m_opacity); while (vertIter != vertEnd) { tmpColor.head<3>() = *(colorIter++); m_vertices.push_back(PackedVertex(*(vertIter++), tmpColor)); } m_dirty = true; return result; }
void MeshGeometry::addTriangles(const Core::Array<unsigned int>& indiceArray) { m_indices.reserve(m_indices.size() + indiceArray.size()); std::copy(indiceArray.begin(), indiceArray.end(), std::back_inserter(m_indices)); m_dirty = true; }
unsigned int MeshGeometry::addVertices(const Core::Array<Vector3f>& v, const Core::Array<Vector3f>& n) { if (v.size() != n.size()) return InvalidIndex; size_t result = m_vertices.size(); Core::Array<Vector3f>::const_iterator vIter = v.begin(); Core::Array<Vector3f>::const_iterator vEnd = v.end(); Core::Array<Vector3f>::const_iterator nIter = n.begin(); const Vector4ub tmpColor(m_color[0], m_color[1], m_color[2], m_opacity); while (vIter != vEnd) m_vertices.push_back(PackedVertex(tmpColor, *(nIter++), *(vIter++))); m_dirty = true; return static_cast<unsigned int>(result); }
unsigned int MeshGeometry::addVertices(const Core::Array<Vector3f>& v, const Core::Array<Vector3f>& n, const Core::Array<Vector4ub>& c) { if (v.size() != n.size() || n.size() != c.size()) return InvalidIndex; size_t result = m_vertices.size(); Core::Array<Vector3f>::const_iterator vIter = v.begin(); Core::Array<Vector3f>::const_iterator vEnd = v.end(); Core::Array<Vector3f>::const_iterator nIter = n.begin(); Core::Array<Vector4ub>::const_iterator cIter = c.begin(); while (vIter != vEnd) m_vertices.push_back(PackedVertex(*(cIter++), *(nIter++), *(vIter++))); m_dirty = true; return static_cast<unsigned int>(result); }