160 CHAPTER 5: Textures^
m_Scale=radius;
m_Squash=squash;colorIncrment=255/stacks;if ((self = [super init]))
{
m_Stacks = stacks;
m_Slices = slices;
m_VertexData = nil;m_TexCoordsData = nil;//VerticesGLfloat *vPtr = m_VertexData =
(GLfloat*)malloc(sizeof(GLfloat) * 3 * ((m_Slices*2+2) *«
(m_Stacks)));//Color dataGLubyte *cPtr = m_ColorData =
(GLubyte*)malloc(sizeof(GLubyte) * 4 * ((m_Slices*2+2) *«
(m_Stacks)));//Normal pointers for lightingGLfloat *nPtr = m_NormalData = (GLfloat*)
malloc(sizeof(GLfloat) * 3 * ((m_Slices*2+2) * (m_Stacks)));GLfloat *tPtr=nil; //3if(textureFile!=nil)
{
tPtr=m_TexCoordsData =
(GLfloat *)malloc(sizeof(GLfloat) * 2 * ((m_Slices*2+2) *«
(m_Stacks)));
}unsigned int phiIdx, thetaIdx;//Latitudefor(phiIdx=0; phiIdx < m_Stacks; phiIdx++)
{
//Starts at -1.57 goes up to +1.57 radians.//The first circlefloat phi0 = M_PI * ((float)(phiIdx+0) * (1.0/(float)«
(m_Stacks)) - 0.5);