Klappt soweit auch ganz gut, nur habe ich an den Polen Texturmapping Probleme: http://www.image-share.com/ipng-200-251.html
Hier mal mein Code für die Sphere Berchnung, wobei nRings und nSlices, so wie der Radius frei definiert werden können:
Code: Alles auswählen
int i;
for (i = 0; i < nRings; i++)
{
float phi = ((float) i / (float) (nRings - 1) - 0.5f) * (float) PI;
for (int j = 0; j <= nSlices; j++)
{
float theta = (float) j / (float) nSlices * (float) PI * 2;
int n = i * (nSlices + 1) + j;
float x = (float) (cos(phi) * cos(theta));
float y = (float) sin(phi);
float z = (float) (cos(phi) * sin(theta));
vertices[n * 3] = x * radius;
vertices[n * 3 + 1] = y * radius;
vertices[n * 3 + 2] = z * radius;
normals[n * 3] = x;
normals[n * 3 + 1] = y;
normals[n * 3 + 2] = z;
texCoords[n * 2] = 1.0f - (float) j / (float) nSlices;
texCoords[n * 2 + 1] = 1.0f - (float) i / (float) (nRings - 1);
}
for (i = 0; i < nRings - 1; i++)
{
for (int j = 0; j <= nSlices; j++)
{
int n = i * (nSlices + 1) + j;
indices[n * 2 + 0] = i * (nSlices + 1) + j;
indices[n * 2 + 1] = (i + 1) * (nSlices + 1) + j;
}
}
Die Textur funktioniert übrigens mit gluSphere Objekten ohne die Fragmente an den Polen ...