X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Fbuilders%2Fvertexbuilder.h;h=7fdc15bcab1212624ef1f9bd9885b94b23ed3606;hp=b5278045baa0ec4227cea6798436d01b879d468a;hb=HEAD;hpb=68b74ce23dd20822b07d79dc25aa0a0a19ef27a5 diff --git a/source/builders/vertexbuilder.h b/source/builders/vertexbuilder.h index b5278045..7fdc15bc 100644 --- a/source/builders/vertexbuilder.h +++ b/source/builders/vertexbuilder.h @@ -40,7 +40,7 @@ protected: public: VertexBuilder() { normal(0, 0, 1); } - virtual ~VertexBuilder() { } + virtual ~VertexBuilder() = default; void set_matrix(const Matrix &m) { mtx = m; } @@ -61,7 +61,7 @@ public: { vertex(Vector4(x, y, z, w)); } void vertex(const Vector3 &v) - { vertex(Vector4(v.x, v.y, v.z, 1)); } + { vertex(compose(v, 1.0f)); } void vertex(const Vector4 &v) { vertex_(mtx*v); } @@ -81,19 +81,13 @@ public: { normal(Vector3(x, y, z)); } void normal(const Vector3 &n) - { attrib(get_attribute_semantic(NORMAL3), mtx*Vector4(n.x, n.y, n.z, 0)); } + { attrib(get_attribute_semantic(NORMAL3), mtx*compose(n, 0.0f)); } void tangent(float x, float y, float z) { tangent(Vector3(x, y, z)); } void tangent(const Vector3 &t) - { attrib(get_attribute_semantic(TANGENT3), mtx*Vector4(t.x, t.y, t.z, 0)); } - - void binormal(float x, float y, float z) - { binormal(Vector3(x, y, z)); } - - void binormal(const Vector3 &b) - { attrib(get_attribute_semantic(BINORMAL3), mtx*Vector4(b.x, b.y, b.z, 0)); } + { attrib(get_attribute_semantic(TANGENT3), mtx*compose(t, 0.0f)); } void texcoord(float s) { texcoord(s, 0, 0, 1); } @@ -138,7 +132,31 @@ public: { color(Color(r, g, b, a)); } void color(const Color &c) - { attrib(get_attribute_semantic(COLOR4_FLOAT), Vector4(c.r, c.g, c.b, c.a)); } + { attrib(get_attribute_semantic(COLOR4), Vector4(c.r, c.g, c.b, c.a)); } + + void group(int g0) + { group(g0, 0, 0, 0); } + + void group(int g0, int g1) + { group(g0, g1, 0, 0); } + + void group(int g0, int g1, int g2) + { group(g0, g1, g2, 0); } + + void group(int g0, int g1, int g2, int g3) + { attrib(get_attribute_semantic(GROUP4), Vector4(g0, g1, g2, g3)); } + + void weight(float w0) + { weight(w0, 0, 0, 0); } + + void weight(float w0, float w1) + { weight(w0, w1, 0, 0); } + + void weight(float w0, float w1, float w2) + { weight(w0, w1, w2, 0); } + + void weight(float w0, float w1, float w2, float w3) + { attrib(get_attribute_semantic(WEIGHT4), Vector4(w0, w1, w2, w3)); } void generic(unsigned i, float x) { generic(i, x, 0, 0, 1); }