gldemo
vertex.h
1 #pragma once
2 
3 #ifndef VERTEX_H
4 #define VERTEX_H
5 
6 #include <QVector3D>
7 
8 class Vertex
9 {
10 public:
11  // Constructors
12  Q_DECL_CONSTEXPR Vertex();
13  Q_DECL_CONSTEXPR explicit Vertex(const QVector3D &position);
14  Q_DECL_CONSTEXPR Vertex(const QVector3D &position, const QVector3D &color);
15 
16  // Accessors / Mutators
17  Q_DECL_CONSTEXPR const QVector3D& position() const;
18  Q_DECL_CONSTEXPR const QVector3D& color() const;
19  void setPosition(const QVector3D& position);
20  void setColor(const QVector3D& color);
21 
22  // OpenGL Helpers
23  static const int PositionTupleSize = 3;
24  static const int ColorTupleSize = 3;
25  static Q_DECL_CONSTEXPR int positionOffset();
26  static Q_DECL_CONSTEXPR int colorOffset();
27  static Q_DECL_CONSTEXPR int stride();
28 
29 private:
30  QVector3D m_position;
31  QVector3D m_color;
32 };
33 
34 /*******************************************************************************
35  * Inline Implementation
36  ******************************************************************************/
37 
38  // Note: Q_MOVABLE_TYPE means it can be memcpy'd.
39 Q_DECLARE_TYPEINFO(Vertex, Q_MOVABLE_TYPE);
40 
41 // Constructors
42 Q_DECL_CONSTEXPR inline Vertex::Vertex() {}
43 Q_DECL_CONSTEXPR inline Vertex::Vertex(const QVector3D &position) : m_position(position) {}
44 Q_DECL_CONSTEXPR inline Vertex::Vertex(const QVector3D &position, const QVector3D &color) : m_position(position), m_color(color) {}
45 
46 // Accessors / Mutators
47 Q_DECL_CONSTEXPR inline const QVector3D& Vertex::position() const { return m_position; }
48 Q_DECL_CONSTEXPR inline const QVector3D& Vertex::color() const { return m_color; }
49 void inline Vertex::setPosition(const QVector3D& position) { m_position = position; }
50 void inline Vertex::setColor(const QVector3D& color) { m_color = color; }
51 
52 // OpenGL Helpers
53 Q_DECL_CONSTEXPR inline int Vertex::positionOffset() { return offsetof(Vertex, m_position); }
54 Q_DECL_CONSTEXPR inline int Vertex::colorOffset() { return offsetof(Vertex, m_color); }
55 Q_DECL_CONSTEXPR inline int Vertex::stride() { return sizeof(Vertex); }
56 
57 #endif // VERTEX_H
58 
59 
Definition: vertex.h:8