Hi!
I'm drawing a sphere and cover it with a texture.
That's the problem: I want the texture to rotate with the sphere.
How can I do this?
Hi!
I'm drawing a sphere and cover it with a texture.
That's the problem: I want the texture to rotate with the sphere.
How can I do this?
Well, if you add the texture to the sphere, it would be attach to it.
Bind the texture before drawing the sphere
If you're drawing a texture, you must have texture coordinates for your sphere vertices. So, when rotating the sphere, the texture will rotate too, unless you are not setting the texture coordinates correctly.Originally Posted by furetto3
Sorry, but I don't understand...I'm doing something like this:
glPushMatrix();
glEnable(GL_TEXTURE_2D);
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE);
glBindTexture(GL_TEXTURE_2D, texture_id[1]);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE, GL_SPHERE_MAP);
glTranslatef(posX, 1.0, posZ);
glutSolidSphere(palla.r, 12, 12);
glDisable(GL_TEXTURE_2D);
glDisable(GL_TEXTURE_GEN_S);
glDisable(GL_TEXTURE_GEN_T);
glPopMatrix();
what kind of sphere vertex I'm suppose to consider?
I'm not sure, but I read somewhere that glutSolidSphere didn't generate texture coordinates. Try glutSolidTeapot(), I'm sure that the teapot have texture coordinates.
Probably you are right.
But I need to draw a sphere not a teapot.
Anybody can help me, please?
You can use glu (gluSphere)
or you can use my library (glhCreateSpheref2 and example code is provided in the header).
Or as a fun exercise, create a sphere yourself.
------------------------------
Sig: http://glhlib.sourceforge.net
an open source GLU replacement library. Much more modern than GLU.
float matrix[16], inverse_matrix[16];
glhLoadIdentityf2(matrix);
glhTranslatef2(matrix, 0.0, 0.0, 5.0);
glhRotateAboutXf2(matrix, angleInRadians);
glhScalef2(matrix, 1.0, 1.0, -1.0);
glhQuickInvertMatrixf2(matrix, inverse_matrix);
glUniformMatrix4fv(uniformLocation1, 1, FALSE, matrix);
glUniformMatrix4fv(uniformLocation2, 1, FALSE, inverse_matrix);