
Public Member Functions | |
| virtual void | draw (Particles *part, DrawActionBase *action, UInt32 length) |
| virtual void | drawIndexed (Particles *part, DrawActionBase *action, Int32 *index, UInt32 length) |
Definition at line 1754 of file OSGParticles.cpp.
| 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 }
| 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 }
1.5.5