
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 1632 of file OSGParticles.cpp.
| virtual void drawLines< posTrait, colTrait, texTrait, sizeTrait >::draw | ( | Particles * | part, | |
| DrawActionBase * | action, | |||
| UInt32 | length | |||
| ) | [inline, virtual] |
Implements osg::ParticlesDrawer.
Definition at line 1634 of file OSGParticles.cpp.
References osg::ParticlesBase::getPositions(), osg::ParticlesBase::getSecPositions(), and init().
01635 { 01636 // some variables for faster access 01637 GeoPositionsPtr pos = part->getPositions(); 01638 01639 // init traits 01640 typename colTrait::dataType colData; 01641 colTrait::init(part, action, colData); 01642 01643 typename texTrait::dataType texData; 01644 texTrait::init(part, action, texData); 01645 01646 typename sizeTrait::dataType sizeData; 01647 sizeTrait::init(part, action, sizeData); 01648 01649 typename posTrait::dataType posData; 01650 posTrait::init(part, action, posData, part->getPositions()); 01651 01652 typename posTrait::dataType secPosData; 01653 posTrait::init(part, action, secPosData, part->getSecPositions()); 01654 01655 Real32 s = sizeTrait::size(sizeData, 0)[0]; 01656 01657 glPushAttrib(GL_LINE_BIT); 01658 glLineWidth(s); 01659 01660 glBegin(GL_LINES); 01661 01662 for(UInt32 i = 0; i < length; ++i) 01663 { 01664 if(colTrait::particle (colData, i)) 01665 continue; 01666 01667 if(texTrait::particle (texData, i)) 01668 continue; 01669 01670 if(sizeTrait::particle(sizeData, i)) 01671 continue; 01672 01673 if(posTrait::particle(posData, i)) 01674 continue; 01675 01676 if(posTrait::particle(secPosData, i)) 01677 continue; 01678 01679 posTrait::vertex(posData); 01680 posTrait::vertex(secPosData); 01681 } 01682 01683 glEnd(); 01684 01685 glPopAttrib(); 01686 }
| virtual void drawLines< posTrait, colTrait, texTrait, sizeTrait >::drawIndexed | ( | Particles * | part, | |
| DrawActionBase * | action, | |||
| Int32 * | index, | |||
| UInt32 | length | |||
| ) | [inline, virtual] |
Implements osg::ParticlesDrawer.
Definition at line 1688 of file OSGParticles.cpp.
References osg::ParticlesBase::getPositions(), osg::ParticlesBase::getSecPositions(), and init().
01690 { 01691 // some variables for faster access 01692 GeoPositionsPtr pos = part->getPositions(); 01693 01694 // init traits 01695 typename colTrait::dataType colData; 01696 colTrait::init(part, action, colData); 01697 01698 typename texTrait::dataType texData; 01699 texTrait::init(part, action, texData); 01700 01701 typename sizeTrait::dataType sizeData; 01702 sizeTrait::init(part, action, sizeData); 01703 01704 typename posTrait::dataType posData; 01705 posTrait::init(part, action, posData, part->getPositions()); 01706 01707 typename posTrait::dataType secPosData; 01708 posTrait::init(part, action, secPosData, part->getSecPositions()); 01709 01710 Real32 s = sizeTrait::size(sizeData, 0)[0]; 01711 01712 glPushAttrib(GL_LINE_BIT); 01713 glLineWidth(s); 01714 01715 glBegin(GL_LINES); 01716 01717 Int32 i; 01718 01719 for(UInt32 ii = 0; ii < length; ++ii) 01720 { 01721 i = index[ii]; 01722 01723 if(i < 0 || i > Int32(pos->getSize())) 01724 continue; 01725 01726 if(colTrait::particle (colData, i)) 01727 continue; 01728 01729 if(texTrait::particle (texData, i)) 01730 continue; 01731 01732 if(sizeTrait::particle(sizeData, i)) 01733 continue; 01734 01735 if(posTrait::particle(posData, i)) 01736 continue; 01737 01738 if(posTrait::particle(secPosData, i)) 01739 continue; 01740 01741 posTrait::vertex(posData); 01742 posTrait::vertex(secPosData); 01743 } 01744 01745 glEnd(); 01746 01747 glPopAttrib(); 01748 }
1.5.5