2D-texture mapping a sphere. glTexGen*()

In Red Book 1.1 there is a sample ‘texgen.c’ for mapping a 1D texture ‘Automatic Texture-Coordinate Generation’ and it works fine. I want to wrap a 2D texture around a sphere with glTexGen*() functions. I have 32x32 blue texture with red square in the center. The init() code looks like:


But when a shpere is renered and I begin to rotate it, assigned texture doesnt rotate with the sphere but behaves like with GL_EYE_LINEAR and GL_EYE_PLANE enabled with 1D Red Book sample.
How make it to stick to sphere surface?


Sounds to me that you misunderstood the purpose of sphere mapping. Sphere mapping is a kind of reflection mapping. The texture is an image of the surrounding envoronment (as seen from the object), and GL_SPHERE_MAP generates texture coordinates for that image so you can use it to get a reflection of the environment in the object being textured.

If you want to wrap a texture around a sphere, like a texture of the earth to get a nice picture of our planet, you have to generate the texture coordinates yourself. The automatic texture coordinate generation won’t help you in that case.

Ive done with it. Yes with GL_TEXTURE_GEN_S and GL_TEXTURE_GEN_T texture will always facing you in GL_SPHERE_MAP mode. There are a good samples on how to calculate texture coordinates to get texture wrap a sphere and yet another way to do it is Quadrics. Just a simple one with few lines of code:
q = gluNewQuadric[];
gluQuadricNormals[q, GL_SMOOTH];
gluQuadricTexture[q, GL_TRUE]; <-- Thats it!

gluSphere[q, …];