diff --git a/libraries/model/src/model/Geometry.cpp b/libraries/model/src/model/Geometry.cpp index 156f593421..ed0201763a 100755 --- a/libraries/model/src/model/Geometry.cpp +++ b/libraries/model/src/model/Geometry.cpp @@ -43,18 +43,18 @@ void Mesh::addAttribute(Slot slot, const BufferView& buffer) { } void Mesh::evalVertexFormat() { - VertexFormat vf; + auto vf = new VertexFormat(); int channelNum = 0; if (hasVertexData()) { - vf.setAttribute(gpu::Stream::POSITION, channelNum, _vertexBuffer._element, 0); + vf->setAttribute(gpu::Stream::POSITION, channelNum, _vertexBuffer._element, 0); channelNum++; } for (auto attrib : _attributeBuffers) { - vf.setAttribute(attrib.first, channelNum, attrib.second._element, 0); + vf->setAttribute(attrib.first, channelNum, attrib.second._element, 0); channelNum++; } - _vertexFormat = vf; + _vertexFormat.reset(vf); } void Mesh::setIndexBuffer(const BufferView& buffer) { @@ -112,12 +112,12 @@ const gpu::BufferStream Mesh::makeBufferStream() const { int channelNum = 0; if (hasVertexData()) { - stream.addBuffer(_vertexBuffer._buffer, _vertexBuffer._offset, _vertexFormat.getChannelStride(channelNum)); + stream.addBuffer(_vertexBuffer._buffer, _vertexBuffer._offset, _vertexFormat->getChannelStride(channelNum)); channelNum++; } for (auto attrib : _attributeBuffers) { BufferView& view = attrib.second; - stream.addBuffer(view._buffer, view._offset, _vertexFormat.getChannelStride(channelNum)); + stream.addBuffer(view._buffer, view._offset, _vertexFormat->getChannelStride(channelNum)); channelNum++; } diff --git a/libraries/model/src/model/Geometry.h b/libraries/model/src/model/Geometry.h index 31c06e6eca..95f1c3bce7 100755 --- a/libraries/model/src/model/Geometry.h +++ b/libraries/model/src/model/Geometry.h @@ -47,14 +47,14 @@ public: void setVertexBuffer(const BufferView& buffer); const BufferView& getVertexBuffer() const { return _vertexBuffer; } uint getNumVertices() const { return _vertexBuffer.getNumElements(); } - bool hasVertexData() const { return !_vertexBuffer._buffer; } + bool hasVertexData() const { return _vertexBuffer._buffer.get() != nullptr; } // Attribute Buffers int getNumAttributes() const { return _attributeBuffers.size(); } void addAttribute(Slot slot, const BufferView& buffer); // Stream format - const VertexFormat& getVertexFormat() const { return _vertexFormat; } + const gpu::Stream::FormatPointer getVertexFormat() const { return _vertexFormat; } // Index Buffer void setIndexBuffer(const BufferView& buffer); @@ -114,7 +114,7 @@ public: protected: - VertexFormat _vertexFormat; + gpu::Stream::FormatPointer _vertexFormat; BufferView _vertexBuffer; BufferViewMap _attributeBuffers;