diff options
author | Zaba999 <qrwfw5rp> | 2012-09-29 23:53:57 +0200 |
---|---|---|
committer | Zaba999 <qrwfw5rp> | 2012-09-29 23:53:57 +0200 |
commit | 95e1d101c82e43396fd93abfaa522e3651613c4c (patch) | |
tree | 9d72f27e84a25c7a744b31eb7612698506ac5b68 /src/graphics/core/vertex.h | |
parent | aa9df8b1f0fbbad4c7be0214a19a90b8495a2067 (diff) | |
parent | c8f39a4c96ab63f9e3edc96845e1b70c89b95d2b (diff) | |
download | colobot-95e1d101c82e43396fd93abfaa522e3651613c4c.tar.gz colobot-95e1d101c82e43396fd93abfaa522e3651613c4c.tar.bz2 colobot-95e1d101c82e43396fd93abfaa522e3651613c4c.zip |
Merge branch 'dev' of https://github.com/colobot/colobot into dev
Diffstat (limited to 'src/graphics/core/vertex.h')
-rw-r--r-- | src/graphics/core/vertex.h | 24 |
1 files changed, 19 insertions, 5 deletions
diff --git a/src/graphics/core/vertex.h b/src/graphics/core/vertex.h index e2c35c3..2ee6be4 100644 --- a/src/graphics/core/vertex.h +++ b/src/graphics/core/vertex.h @@ -33,6 +33,7 @@ // Graphics module namespace namespace Gfx { + /** * \struct Vertex * \brief Vertex of a primitive @@ -43,17 +44,23 @@ namespace Gfx { * - vertex coordinates (x,y,z) as Math::Vector, * - normal coordinates (nx,ny,nz) as Math::Vector * - texture coordinates (u,v) as Math::Point. + * + * Additional padding is provided to align to even multiplies of 4 floats for faster access. */ struct Vertex { Math::Vector coord; + float pad1; Math::Vector normal; + float pad2; Math::Point texCoord; + float pad3, pad4; explicit Vertex(Math::Vector aCoord = Math::Vector(), Math::Vector aNormal = Math::Vector(), Math::Point aTexCoord = Math::Point()) - : coord(aCoord), normal(aNormal), texCoord(aTexCoord) {} + : coord(aCoord), pad1(0.0f), normal(aNormal), + pad2(0.0f),texCoord(aTexCoord), pad3(0.0f), pad4(0.0f) {} //! Returns a string "(c: [...], n: [...], tc: [...])" @@ -74,16 +81,18 @@ struct Vertex * It contains: * - vertex coordinates (x,y,z) as Math::Vector, * - RGBA color as Color + * + * Additional padding is provided to align to even multiplies of 4 floats for faster access. */ struct VertexCol { Math::Vector coord; + float pad; Color color; explicit VertexCol(Math::Vector aCoord = Math::Vector(), - Color aColor = Color(), - Math::Point aTexCoord = Math::Point()) - : coord(aCoord), color(aColor) {} + Color aColor = Color()) + : coord(aCoord), pad(0.0f), color(aColor) {} //! Returns a string "(c: [...], col: [...])" inline std::string ToString() const @@ -102,11 +111,15 @@ struct VertexCol * * In addition to fields from Vector, it contains * secondary texture coordinates (u2, v2) as Math::Point + * + * Additional padding is provided to align to even multiplies of 4 floats for faster access. */ struct VertexTex2 { Math::Vector coord; + float pad1; Math::Vector normal; + float pad2; Math::Point texCoord; Math::Point texCoord2; @@ -114,7 +127,8 @@ struct VertexTex2 Math::Vector aNormal = Math::Vector(), Math::Point aTexCoord = Math::Point(), Math::Point aTexCoord2 = Math::Point()) - : coord(aCoord), normal(aNormal), texCoord(aTexCoord), texCoord2(aTexCoord2) {} + : coord(aCoord), pad1(0.0f), normal(aNormal), pad2(0.0f), + texCoord(aTexCoord), texCoord2(aTexCoord2) {} //! Sets the fields from Vertex with texCoord2 = (0,0) void FromVertex(const Vertex &v) |