Create a icosahedron (low-poly sphere) directly into the buffers (just like craig mentioned)
//vertexBuffer size is 60
//faceBuffer size is 20
float a,b,phi;
phi=(1+sqrtf(5))/2;
a = 0.5f; b = 1 / (2 * phi);
vertexBuffer[0].p=D3DXVECTOR3(0, b, -a); vertexBuffer[1].p=D3DXVECTOR3(b, a, 0); vertexBuffer[2].p=D3DXVECTOR3(-b, a, 0);
vertexBuffer[3].p=D3DXVECTOR3(0, b, a); vertexBuffer[4].p=D3DXVECTOR3(-b, a, 0); vertexBuffer[5].p=D3DXVECTOR3(b, a, 0);
vertexBuffer[6].p=D3DXVECTOR3(0, b, a); vertexBuffer[7].p=D3DXVECTOR3(0, -b, a); vertexBuffer[8].p=D3DXVECTOR3(-a, 0, b);
vertexBuffer[9].p=D3DXVECTOR3(0, b, a); vertexBuffer[10].p=D3DXVECTOR3(a, 0, b); vertexBuffer[11].p=D3DXVECTOR3(0, -b, a);
vertexBuffer[12].p=D3DXVECTOR3(0, b, -a); vertexBuffer[13].p=D3DXVECTOR3(0,-b, -a); vertexBuffer[14].p=D3DXVECTOR3(a, 0, -b);
vertexBuffer[15].p=D3DXVECTOR3(0, b, -a); vertexBuffer[16].p=D3DXVECTOR3(-a, 0,-b); vertexBuffer[17].p=D3DXVECTOR3(0, -b,-a);
vertexBuffer[18].p=D3DXVECTOR3(0, -b, a); vertexBuffer[19].p=D3DXVECTOR3(b,-a, 0); vertexBuffer[20].p=D3DXVECTOR3(-b,-a, 0);
vertexBuffer[21].p=D3DXVECTOR3(0, -b,-a); vertexBuffer[22].p=D3DXVECTOR3(-b,-a, 0); vertexBuffer[23].p=D3DXVECTOR3(b,-a, 0);
vertexBuffer[24].p=D3DXVECTOR3(-b, a, 0); vertexBuffer[25].p=D3DXVECTOR3(-a, 0, b); vertexBuffer[26].p=D3DXVECTOR3(-a, 0, -b);
vertexBuffer[27].p=D3DXVECTOR3(-b,-a, 0); vertexBuffer[28].p=D3DXVECTOR3(-a, 0,-b); vertexBuffer[29].p=D3DXVECTOR3(-a, 0, b);
vertexBuffer[30].p=D3DXVECTOR3(b, a, 0); vertexBuffer[31].p=D3DXVECTOR3(a, 0,-b); vertexBuffer[32].p=D3DXVECTOR3(a, 0, b);
vertexBuffer[33].p=D3DXVECTOR3(b, -a,0); vertexBuffer[34].p=D3DXVECTOR3(a, 0, b); vertexBuffer[35].p=D3DXVECTOR3(a, 0,-b);
vertexBuffer[36].p=D3DXVECTOR3(0, b, a); vertexBuffer[37].p=D3DXVECTOR3(-a, 0, b); vertexBuffer[38].p=D3DXVECTOR3(-b, a, 0);
vertexBuffer[39].p=D3DXVECTOR3(0, b, a); vertexBuffer[40].p=D3DXVECTOR3(b, a, 0); vertexBuffer[41].p=D3DXVECTOR3(a, 0, b);
vertexBuffer[42].p=D3DXVECTOR3(0, b,-a); vertexBuffer[43].p=D3DXVECTOR3(-b, a, 0); vertexBuffer[44].p=D3DXVECTOR3(-a, 0,-b);
vertexBuffer[45].p=D3DXVECTOR3(0, b,-a); vertexBuffer[46].p=D3DXVECTOR3(a, 0,-b); vertexBuffer[47].p=D3DXVECTOR3(b, a, 0);
vertexBuffer[48].p=D3DXVECTOR3(0, -b,-a); vertexBuffer[49].p=D3DXVECTOR3(-a, 0,-b); vertexBuffer[50].p=D3DXVECTOR3(-b,-a, 0);
vertexBuffer[51].p=D3DXVECTOR3(0, -b,-a); vertexBuffer[52].p=D3DXVECTOR3(b,-a, 0); vertexBuffer[53].p=D3DXVECTOR3(a, 0,-b);
vertexBuffer[54].p=D3DXVECTOR3(0, -b, a); vertexBuffer[55].p=D3DXVECTOR3(-b,-a, 0); vertexBuffer[56].p=D3DXVECTOR3(-a, 0, b);
vertexBuffer[57].p=D3DXVECTOR3(0, -b, a); vertexBuffer[58].p=D3DXVECTOR3(a, 0, b); vertexBuffer[59].p=D3DXVECTOR3(b,-a, 0);
int n=0;
for(int k=0; k<totalPolygons; k++) {
faceBuffer[k].v0=n;
faceBuffer[k].v1=n+2;
faceBuffer[k].v2=n+1;
n=n+3;
}