Hello,

Hopefully this is a simple question; I have the following code that I am using to generate a sphere object for OpenGL. The problem is, as the picture will show, is that there are "holes" in the spheres. I placed a few boxes in the scene to show that overall my buffers/shaders seem to be OK and I believe the problem may be the indices.

Anyway, here is the picture:

And here is how I am generating the sphere:

What can I do to get rid of the holes?Code auto:0:float ShapeRadius = 3.0f; GLuint NumberOfRings = 50; GLuint NumberOfSectors = 50; float const R = 1. / (GLfloat)(NumberOfRings - 1); float const S = 1. / (GLfloat)(NumberOfSectors - 1); int r, s; Temp_Vertices = new std::vector<GLfloat>; Temp_Normals = new std::vector<GLfloat>; Temp_TextCoords = new std::vector<GLfloat>; Temp_Indices = new std::vector<GLuint>; Temp_Vertices->resize(NumberOfRings * NumberOfSectors * 3); Temp_Normals->resize(NumberOfRings * NumberOfSectors * 3); Temp_TextCoords->resize(NumberOfRings * NumberOfSectors * 2); std::vector<GLfloat>::iterator v = Temp_Vertices->begin(); std::vector<GLfloat>::iterator n = Temp_Normals->begin(); std::vector<GLfloat>::iterator t = Temp_TextCoords->begin(); for (r = 0; r < NumberOfRings; r++) for (s = 0; s < NumberOfSectors; s++) { float const y = sin(-M_PI_2 + M_PI * r * R); float const x = cos(2 * M_PI * s * S) * sin(M_PI * r * R); float const z = sin(2 * M_PI * s * S) * sin(M_PI * r * R); *t++ = s*S; *t++ = r*R; *v++ = x * ShapeRadius; *v++ = y * ShapeRadius; *v++ = z * ShapeRadius; *n++ = x; *n++ = y; *n++ = z; } Temp_Indices->resize(NumberOfRings * NumberOfSectors * 4); std::vector<GLuint>::iterator i = Temp_Indices->begin(); for (r = 0; r < NumberOfRings; r++) for (s = 0; s < NumberOfSectors; s++) { *i++ = r * NumberOfSectors + s; *i++ = r * NumberOfSectors + (s + 1); *i++ = (r + 1) * NumberOfSectors + (s + 1); *i++ = (r + 1) * NumberOfSectors + s; } Vertices = Temp_Vertices->data(); NumOfVertices = Temp_Vertices->size(); Indices = Temp_Indices->data(); NumOfIndices = Temp_Indices->size(); Normals = Temp_Normals->data(); NumOfNormals = Temp_Normals->size(); TextureCoordinates = Temp_TextCoords->data(); NumOfTextureCoordinates = Temp_TextCoords->size();

Thank you.