drawPoints< posTrait, colTrait, texTrait, sizeTrait > Struct Template Reference

Inheritance diagram for drawPoints< posTrait, colTrait, texTrait, sizeTrait >:

osg::ParticlesDrawer

List of all members.

Public Member Functions

virtual void draw (Particles *part, DrawActionBase *action, UInt32 length)
virtual void drawIndexed (Particles *part, DrawActionBase *action, Int32 *index, UInt32 length)


Detailed Description

template<class posTrait, class colTrait, class texTrait, class sizeTrait>
struct drawPoints< posTrait, colTrait, texTrait, sizeTrait >

Definition at line 1754 of file OSGParticles.cpp.


Member Function Documentation

template<class posTrait, class colTrait, class texTrait, class sizeTrait>
virtual void drawPoints< posTrait, colTrait, texTrait, sizeTrait >::draw ( Particles part,
DrawActionBase action,
UInt32  length 
) [inline, virtual]

Implements osg::ParticlesDrawer.

Definition at line 1756 of file OSGParticles.cpp.

References osg::ParticlesBase::getPositions(), and init().

01757     {
01758         // some variables for faster access
01759         GeoPositionsPtr  pos  = part->getPositions();
01760 
01761         // init traits
01762         typename posTrait::dataType posData;
01763         posTrait::init(part, action, posData, part->getPositions());
01764 
01765         typename colTrait::dataType colData;
01766         colTrait::init(part, action, colData);
01767 
01768         typename sizeTrait::dataType sizeData;
01769         sizeTrait::init(part, action, sizeData);
01770 
01771         typename texTrait::dataType texData;
01772         texTrait::init(part, action, texData);
01773 
01774         sizeTrait::particle(sizeData, 0);
01775         Real32 s = sizeTrait::size(sizeData, 0)[0];
01776 
01777         glPushAttrib(GL_POINT_BIT);
01778         glPointSize(s);
01779           
01780         glBegin(GL_POINTS);
01781         
01782         for(UInt32 i = 0; i < length; ++i)
01783         {
01784             if(colTrait::particle(colData, i))
01785                 continue;
01786 
01787             if(posTrait::particle(posData, i))
01788                 continue;
01789 
01790             if(texTrait::particle(texData, i))
01791                 continue;
01792 
01793             texTrait::vertex(texData);
01794             posTrait::vertex(posData);
01795         }
01796 
01797         glEnd();
01798     
01799         glPopAttrib();
01800     }

template<class posTrait, class colTrait, class texTrait, class sizeTrait>
virtual void drawPoints< posTrait, colTrait, texTrait, sizeTrait >::drawIndexed ( Particles part,
DrawActionBase action,
Int32 *  index,
UInt32  length 
) [inline, virtual]

Implements osg::ParticlesDrawer.

Definition at line 1802 of file OSGParticles.cpp.

References osg::ParticlesBase::getPositions(), and init().

01804     {
01805         // some variables for faster access
01806         GeoPositionsPtr  pos  = part->getPositions();
01807 
01808         // init traits
01809         typename posTrait::dataType posData;
01810         posTrait::init(part, action, posData, part->getPositions());
01811 
01812         typename colTrait::dataType colData;
01813         colTrait::init(part, action, colData);
01814 
01815         typename sizeTrait::dataType sizeData;
01816         sizeTrait::init(part, action, sizeData);
01817 
01818         sizeTrait::particle(sizeData, 0);
01819         Real32 s = sizeTrait::size(sizeData, 0)[0];
01820 
01821         glPushAttrib(GL_POINT_BIT);
01822         glPointSize(s);
01823           
01824         glBegin(GL_POINTS);
01825 
01826         Int32 i;
01827 
01828         for(UInt32 ii = 0; ii < length; ++ii)
01829         {
01830             i = index[ii];
01831 
01832             if(i < 0 || i > Int32(pos->getSize()))
01833                 continue;
01834 
01835             if(colTrait::particle(colData, i))
01836                 continue;
01837 
01838             if(posTrait::particle(posData, i))
01839                 continue;
01840 
01841             posTrait::vertex(posData);
01842         }
01843 
01844         glEnd();
01845     
01846         glPopAttrib();
01847     }


The documentation for this struct was generated from the following file:

Generated on Mon Mar 17 12:02:58 2008 for OpenSG by  doxygen 1.5.5