sizeofimage("environ.sgi", &Sx, &Sy);
imageData = longimagedata("environ1.sgi");
texture = glGenLists(1);
glNewList(texture, GL_COMPILE);
gluBuild2DMipmaps(GL_TEXTURE_2D, 4, Sx, Sy, GL_ABGR_EXT, GL_UNSIGNED_BYTE, imageData);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvf(GL_TEXTURE_2D, GL_TEXTURE_ENV_MODE, GL_DECAL);
glTexGenf(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glEnable(GL_TEXTURE_GEN_S);
glTexGenf(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glEnable(GL_TEXTURE_GEN_T);
glEnable(GL_TEXTURE_2D);
glEndList();
Hangle = fatan2(Head[0], Head[2])/(float)M_PI/2.;
Vangle = fatan2(Head[1], sqrt(Head[2]*Head[2]+Head[0]*Head[0])/(float)M_PI/2.;
glCallList(texture);
tm[0] = 0.5; tm[4] = 0; tm[8] = 0; tm[12] = Hangle+0.25;
tm[1] = 0; tm[5] = 0.5; tm[9] = 0; tm[13] = Vangle;
tm[2] = 0; tm[6] = 0; tm[10] = 1; tm[14] = 0;
tm[3] = 0; tm[7] = 0; tm[11] = 0; tm[15] = 1;
glPushMatrix();
glPopMatrix();