Pro OpenGL ES for iOS

(singke) #1

CHAPTER 7: Well-Rendered Miscellany (^217)
Listing 7-7. The execute loop for the entire lens flare effect
-(void)execute:(CGRect)frame source:(CGPoint)source
{
CGPoint position;
NSEnumerator e;
Flare
object;
static GLfloat deltaX=40,deltaY=40;
static GLfloat offsetFromCenterX,offsetFromCenterY;
static GLfloat startingOffsetFromCenterX,startingOffsetFromCenterY;
int numElements;
GLfloat cx,cy;
static int counter=0;
e=[m_Flares objectEnumerator];
cx=(frame.size.width/2.0);
cy=(frame.size.height/2.0);
startingOffsetFromCenterX=cx-source.x;
startingOffsetFromCenterY=source.y-cy;
offsetFromCenterX=startingOffsetFromCenterX;
offsetFromCenterY=startingOffsetFromCenterY;
numElements=[m_Flares count];
deltaX=2.0startingOffsetFromCenterX;
deltaY=2.0
startingOffsetFromCenterY;
while (object = [e nextObject])
{
position=CGPointMake(offsetFromCenterX,offsetFromCenterY);
[object renderFlareAt:position];
offsetFromCenterX-=deltaX[object getVectorPosition];
offsetFromCenterY-=deltaY
[object getVectorPosition];
}
counter++;
}
Finally, each of the individual flare images must be loaded on initialization and added
into an NSArray. A couple of lines follow:
[m_Flares addObject:[[Flare alloc]init:@"hexagon_blur.png"
size:1.0 vectorPosition:(.05-ff) r:1.0 g:0.73 b:0.30 a:.4]];
[m_Flares addObject:[[Flare alloc]init:@"glow.png"
size:1.5 vectorPosition:(.055-ff) r:1.0 g:0.73 b:0.50 a:.4]];

Free download pdf