]> git.tdb.fi Git - libs/gl.git/blobdiff - source/cylinder.cpp
Add a utility class for switching renderables
[libs/gl.git] / source / cylinder.cpp
index 30c3530c85b3ab63e068eeb6891d78922b58de7b..901a0f4b43cf057872a752960e30678a2a980b24 100644 (file)
@@ -1,10 +1,4 @@
-/* $Id$
-
-This file is part of libmspgl
-Copyright © 2011  Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
+#define _USE_MATH_DEFINES
 #include <cmath>
 #include "cylinder.h"
 #include "primitivebuilder.h"
@@ -25,15 +19,15 @@ CylinderBuilder::CylinderBuilder(float r, float l, unsigned s):
 
 void CylinderBuilder::build(PrimitiveBuilder &builder) const
 {
-       if(binormal_attr>=0)
-               builder.attrib(binormal_attr, 0, 1, 0);
+       if(generate_tbn)
+               builder.binormal(0, 1, 0);
        for(unsigned i=0; i<2; ++i)
        {
                float z = (i-0.5)*length;
                builder.normal(0, 0, i*2.0-1.0);
                builder.texcoord(0.5, 0.5);
-               if(tangent_attr>=0)
-                       builder.attrib(tangent_attr, (i ? 1 : -1), 0, 0);
+               if(generate_tbn)
+                       builder.tangent((i ? 1 : -1), 0, 0);
                builder.vertex(0, 0, z);
                for(unsigned j=0; j<segments; ++j)
                {
@@ -49,8 +43,8 @@ void CylinderBuilder::build(PrimitiveBuilder &builder) const
        float v_scale = 1;
        adjust_texture_scale(u_scale, v_scale, radius*M_PI*2, length);
 
-       if(binormal_attr>=0)
-               builder.attrib(binormal_attr, 0, 0, 1);
+       if(generate_tbn)
+               builder.binormal(0, 0, 1);
        for(unsigned i=0; i<2; ++i)
        {
                float z = (i-0.5)*length;
@@ -61,8 +55,8 @@ void CylinderBuilder::build(PrimitiveBuilder &builder) const
                        float s = sin(a);
                        builder.normal(c, s, 0);
                        builder.texcoord(j*u_scale, i*v_scale);
-                       if(tangent_attr>=0)
-                               builder.attrib(tangent_attr, -s, c, 0);
+                       if(generate_tbn)
+                               builder.tangent(-s, c, 0);
                        builder.vertex(radius*c, radius*s, z);
                }
        }