Сфера.

Surface* sphere(int seg,float radius, Engine *eng){
//int resol=1<<seg;
int resol=seg;
//подсчет индексов для поверхности
int count_vertices = pow(resol+1,2);
int count_indices = resol * resol * 6;
//создание поверхности
Surface *surf = eng->CreateSurface(count_vertices,count_indices);
surf->Lock();
//расстановка точек.
for(int i=0;i<=resol;i++){
for(int j=0;j<=resol;j++){
int index=(resol+1)*i+j;
float M_PI=2.0f*3.14159265358979323846f;
float x=cos(M_PI*i/(float)resol);
float y=sin(M_PI*i/(float)resol);
float zc=cos(M_PI*j/(float)resol);
float zs=sin(M_PI*j/(float)resol);
vec3 position(x*zs,y*zs,zc);
surf->SetVertexPosition(index,position*radius);
surf->SetVertexNormal(index,position);
surf->SetVertexTexCoord(index,i/(float)resol,j/(float)resol);
}}
//натяжка полигонов
for(int i=0;i<resol;i++){
for(int j=0;j<resol;j++){
int index=2*(resol*i+j);
int v00=(resol+1)*i+j;
int v10=v00+1;
int v01=v00+resol+1;
int v11=v01+1;
surf->SetTriangle(index,v00,v10,v01);
surf->SetTriangle(index+1,v10,v11,v01);
}}
surf->RecalcTangents();
surf->UnLock();
return surf;
}
Как мне в подобного вида функциях использовать cSurface чтоб в функцию указатель на двиг не передавать?