Pro OpenGL ES for iOS

(singke) #1

292 CHAPTER 9: Performance ’n’ Stuff^


So, how do we use VBOs? Very easily. Take a look at the executeVBO() method in
Listing 9-2.
Listing 9-2. Rendering the Planet Using VBOs

-(bool)executeVBO
{
int i;
static int counter=0;

glBindBuffer(GL_ARRAY_BUFFER, m_VBO_SphereDataName); //1

glMatrixMode(GL_MODELVIEW);
glDisable(GL_CULL_FACE); //2
glEnable(GL_BLEND);
glEnable(GL_DEPTH_TEST);

glEnableClientState(GL_VERTEX_ARRAY); //3

if(m_UseNormals)
glEnableClientState(GL_NORMAL_ARRAY);

glVertexPointer(3,GL_FLOAT,0,(GLvoid*)(char*)0); //4
glNormalPointer(GL_FLOAT,0,(const GLvoid*)(char*)(0+m_TotalXYZBytes));
glTexCoordPointer(2,GL_FLOAT,0,
(const GLvoid*)((char*)(m_TotalXYZBytes+m_TotalNormalBytes)));

if(m_UseTexture)
{
if(m_TexCoordsData!=nil)
{
glEnable(GL_TEXTURE_2D);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);

if(m_TextureID!=0)
glBindTexture(GL_TEXTURE_2D, m_TextureID);

}
}
else
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
//5
glDrawArrays(GL_TRIANGLE_STRIP, 0, (m_Slices+1)*2*(m_Stacks-1)+2);

glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);

return true;
}
Free download pdf