97 void setIndexBuffer(
const std::shared_ptr<IndexBuffer>& ib,
const size_t style = 0)
99 if (_indexBuffer.size() <= style) {
100 _indexBuffer.resize(style + 1);
102 _indexBuffer[style] = ib;
108 if (_primitive.size() <= style) {
109 _primitive.resize(style + 1);
111 _primitive[style] = p;
119 return style < _indexBuffer.size() ? _indexBuffer[style] :
nullptr;
124 return style < _primitive.size() ? _primitive[style] :
Primitive{};
128 void initGeometryData();
137 std::unique_ptr<GeometryData> _geometryData;
140 std::vector<std::shared_ptr<IndexBuffer>> _indexBuffer;
143 std::shared_ptr<VertexBuffer> _vertexBuffer;
146 std::vector<Primitive> _primitive;
Axis-Aligned Bounding Box defined by center and half-extents.
GPU-resident geometry defined by vertex/index buffers and one or more Primitives.
void setVertexBuffer(const std::shared_ptr< VertexBuffer > &vb)
void setPrimitive(const Primitive &p, const size_t style=0)
Primitive getPrimitive(const size_t style=0) const
void setAabb(const BoundingBox &bounds)
void setIndexBuffer(const std::shared_ptr< IndexBuffer > &ib, const size_t style=0)
std::shared_ptr< VertexBuffer > getVertexBuffer() const
const BoundingBox & aabb() const
std::shared_ptr< IndexBuffer > getIndexBuffer(const size_t style=0) const
Describes how vertex and index data should be interpreted for a draw call.