Pro OpenGL ES for iOS

(singke) #1

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;

//Vertices

GLfloat *vPtr = m_VertexData =
(GLfloat*)malloc(sizeof(GLfloat) * 3 * ((m_Slices*2+2) *«
(m_Stacks)));

//Color data

GLubyte *cPtr = m_ColorData =
(GLubyte*)malloc(sizeof(GLubyte) * 4 * ((m_Slices*2+2) *«
(m_Stacks)));

//Normal pointers for lighting

GLfloat *nPtr = m_NormalData = (GLfloat*)
malloc(sizeof(GLfloat) * 3 * ((m_Slices*2+2) * (m_Stacks)));

GLfloat *tPtr=nil; //3

if(textureFile!=nil)
{
tPtr=m_TexCoordsData =
(GLfloat *)malloc(sizeof(GLfloat) * 2 * ((m_Slices*2+2) *«
(m_Stacks)));
}

unsigned int phiIdx, thetaIdx;

//Latitude

for(phiIdx=0; phiIdx < m_Stacks; phiIdx++)
{
//Starts at -1.57 goes up to +1.57 radians.

//The first circle

float phi0 = M_PI * ((float)(phiIdx+0) * (1.0/(float)«
(m_Stacks)) - 0.5);
Free download pdf