Reimplementation of LineStrip primitive using DYNAMIC vertext array and

triangle strips (basic mesh).
This commit is contained in:
brunoherbelin
2021-02-26 17:01:24 +01:00
parent afc0c7af0e
commit f7b93478ed
4 changed files with 172 additions and 91 deletions

View File

@@ -175,19 +175,26 @@ public:
*/
class LineStrip : public Primitive {
uint linewidth_;
public:
LineStrip(std::vector<glm::vec3> points, std::vector<glm::vec4> colors, uint linewidth = 1);
LineStrip(std::vector<glm::vec2> path, float linewidth = 1.f);
virtual ~LineStrip();
virtual void draw(glm::mat4 modelview, glm::mat4 projection) override;
virtual void init () override;
virtual void accept(Visitor& v) override;
std::vector<glm::vec3> getPoints() { return points_; }
std::vector<glm::vec4> getColors() { return colors_; }
inline std::vector<glm::vec2> path() { return path_; }
inline float lineWidth() const { return linewidth_ * 500.f; }
void changePath(std::vector<glm::vec2> path);
void editPath(uint index, glm::vec2 position);
void setLineWidth(float linewidth);
protected:
float linewidth_;
uint arrayBuffer_;
std::vector<glm::vec2> path_;
void updatePath();
inline void setLineWidth(uint v) { linewidth_ = v; }
inline uint getLineWidth() const { return linewidth_; }
};
@@ -197,12 +204,10 @@ public:
class LineCircle : public LineStrip {
public:
LineCircle(uint linewidth = 1);
LineCircle(float linewidth = 1.f);
void init() override;
void accept(Visitor& v) override;
virtual void accept(Visitor& v) override;
virtual ~LineCircle();
};