]> git.tdb.fi Git - libs/gl.git/blobdiff - source/vertexbuilder.h
Remove support for legacy OpenGL features
[libs/gl.git] / source / vertexbuilder.h
index 49f0dcf5e38c89d69496bd6473b0027dee63ce8f..55f914a31a24b7400b7efbe9b786d32940fa882c 100644 (file)
@@ -21,8 +21,20 @@ data.  Attributes can be read from protected member variables.
 */
 class VertexBuilder
 {
+public:
+       class PushMatrix
+       {
+       private:
+               VertexBuilder &bld;
+               Matrix mtx;
+
+       public:
+               PushMatrix(VertexBuilder &b): bld(b), mtx(bld.mtx) { }
+               ~PushMatrix() { bld.mtx = mtx; }
+       };
+
 protected:
-       MatrixStack mtx;
+       Matrix mtx;
        Vector3 nor;
        Color col;
        std::map<unsigned, Vector4> texc;
@@ -40,10 +52,6 @@ public:
        { mtx *= m; }
 
        const Matrix &get_matrix() const
-       { return mtx.top(); }
-
-       // Deprecated
-       MatrixStack &matrix()
        { return mtx; }
 
        void vertex(float x, float y)
@@ -59,7 +67,7 @@ public:
        { vertex(Vector4(v.x, v.y, v.z, 1)); }
 
        void vertex(const Vector4 &v)
-       { vertex_(mtx.top()*v); }
+       { vertex_(mtx*v); }
 
 protected:
        virtual void vertex_(const Vector4 &) = 0;
@@ -70,7 +78,7 @@ public:
 
        void normal(const Vector3 &n)
        {
-               Vector4 tn = mtx.top()*Vector4(n.x, n.y, n.z, 0);
+               Vector4 tn = mtx*Vector4(n.x, n.y, n.z, 0);
                nor = Vector3(tn.x, tn.y, tn.z);
        }
 
@@ -79,7 +87,7 @@ public:
 
        void tangent(const Vector3 &t)
        {
-               Vector4 tt = mtx.top()*Vector4(t.x, t.y, t.z, 0);
+               Vector4 tt = mtx*Vector4(t.x, t.y, t.z, 0);
                attrib(get_component_type(TANGENT3), tt);
        }
 
@@ -88,7 +96,7 @@ public:
 
        void binormal(const Vector3 &b)
        {
-               Vector4 tb = mtx.top()*Vector4(b.x, b.y, b.z, 0);
+               Vector4 tb = mtx*Vector4(b.x, b.y, b.z, 0);
                attrib(get_component_type(BINORMAL3), tb);
        }