12 #ifndef hifi_RenderablePolyLineEntityItem_h
13 #define hifi_RenderablePolyLineEntityItem_h
15 #include "RenderableEntityItem.h"
16 #include <TextureCache.h>
18 namespace render {
namespace entities {
20 class PolyLineEntityRenderer :
public TypedEntityRenderer<PolyLineEntityItem> {
21 using Parent = TypedEntityRenderer<PolyLineEntityItem>;
22 friend class EntityRenderer;
25 PolyLineEntityRenderer(
const EntityItemPointer& entity);
27 void updateModelTransformAndBound(
const EntityItemPointer& entity)
override;
29 virtual bool isTransparent()
const override;
31 ComponentMode getFadeOutMode()
const override {
return ComponentMode::COMPONENT_MODE_DISABLED; }
34 virtual bool needsRenderUpdateFromTypedEntity(
const TypedEntityPointer& entity)
const override;
35 virtual void doRenderUpdateSynchronousTyped(
const ScenePointer& scene, Transaction& transaction,
const TypedEntityPointer& entity)
override;
36 virtual void doRenderUpdateAsynchronousTyped(
const TypedEntityPointer& entity)
override;
38 virtual ItemKey getKey()
override;
39 virtual ShapeKey getShapeKey()
override;
40 virtual void doRender(RenderArgs* args)
override;
42 static void buildPipelines();
43 void updateGeometry();
46 QVector<glm::vec3> _points;
47 QVector<glm::vec3> _normals;
48 QVector<glm::vec3> _colors;
50 QVector<float> _widths;
52 NetworkTexturePointer _texture;
53 float _textureAspectRatio { 1.0f };
54 bool _textureLoaded {
false };
56 bool _isUVModeStretch {
false };
57 bool _faceCamera {
false };
60 size_t _numVertices { 0 };
61 gpu::BufferPointer _polylineDataBuffer;
62 gpu::BufferPointer _polylineGeometryBuffer;
63 static std::map<std::pair<render::Args::RenderMethod, bool>, gpu::PipelinePointer> _pipelines;