CHAPTER 8: Putting It All Together (^275)
if(mag<.2)
mag=.2;
else if(mag>1.0)
mag=1.0;
sd->r=sd->g=sd->b=mag;
sd->a=1.0;
sd->hdnum=[[dict objectForKey:@"hdnum"]longValue];
}
}
-(void)execute
{
int len;
GLfloat pointSize[2];
glDisable(GL_LIGHTING); //5
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glMatrixMode(GL_MODELVIEW);
glBlendFunc(GL_ONE, GL_ONE_MINUS_DST_ALPHA);
glEnable(GL_BLEND);
len=sizeof(struct starData);
glColorPointer(4, GL_FLOAT, len, &m_Data->r); //6
glVertexPointer(3,GL_FLOAT,len,m_Data);
glGetFloatv(GL_SMOOTH_POINT_SIZE_RANGE,pointSize); //7
glEnable(GL_POINT_SMOOTH);
glPointSize(3.0);
glDrawArrays(GL_POINTS,len,m_TotalStars); //8
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glEnable(GL_DEPTH_TEST);
glEnable(GL_LIGHTING);
}
@end
The stars are initially stored as a plist. That’s not very efficient but works well for a small
dataset. In Distant Suns, my stars are stored in a tightly packed binary file, which is nice
for my 300,000-star database.
singke
(singke)
#1