我需要为glutSolidSphere添加一个地球纹理.问题是我无法弄清楚如何使纹理在整个球体上伸展并仍然能够旋转.
我们正在使用纹理.
glTexGeni(GL_S, GL_TEXTURE_GEN_MODE,GL_OBJECT_LINEAR);
glTexGeni(GL_T, GL_TEXTURE_GEN_MODE,GL_OBJECT_LINEAR);
glEnable(GL_TEXTURE_2D);
glEnable(GL_TEXTURE_GEN_S);
glEnable(GL_TEXTURE_GEN_T);
//drawcode...
Run Code Online (Sandbox Code Playgroud)
在param中使用GL_SPHERE_MAP而不是GL_OBJECT_LINEAR使纹理看起来正确,但它们无法旋转.
我用于纹理的参数是
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
Run Code Online (Sandbox Code Playgroud)
我知道GL_REPEAT会对纹理进行平铺,而使用GL_CLAMP会在对象上给我一次纹理,但我不能让它在整个球体上延伸.
有谁知道如何正确构建glutSolidSphere?