我需要在OpenGL中绘制一个半球体。我找到了一个drawSphere函数,将其修改为仅绘制一半的纬度(这样就可以绘制一半的球体),这正是我想要的。它能够正确地完成这个任务。
然而,我不知道该如何使用glTexCoordf来使纹理正确映射到这个半球体上。我对OpenGL并不是很熟悉,我已经尝试了无数种变化,但我就是无法使纹理正确地显示在上面。
然而,我不知道该如何使用glTexCoordf来使纹理正确映射到这个半球体上。我对OpenGL并不是很熟悉,我已经尝试了无数种变化,但我就是无法使纹理正确地显示在上面。
void drawHemisphere(double r, int lats, int longs)
{
int i, j;
int halfLats = lats / 2;
for(i = 0; i <= halfLats; i++)
{
double lat0 = M_PI * (-0.5 + (double) (i - 1) / lats);
double z0 = sin(lat0);
double zr0 = cos(lat0);
double lat1 = M_PI * (-0.5 + (double) i / lats);
double z1 = sin(lat1);
double zr1 = cos(lat1);
glBegin(GL_QUAD_STRIP);
for(j = 0; j <= longs; j++)
{
double lng = 2 * M_PI * (double) (j - 1) / longs;
double x = cos(lng);
double y = sin(lng);
// glTexCoordf()
glNormal3f(x * zr0, y * zr0, z0);
glVertex3f(x * zr0, y * zr0, z0);
// glTexCoordf()
glNormal3f(x * zr1, y * zr1, z1);
glVertex3f(x * zr1, y * zr1, z1);
}
glEnd();
}
}
有人知道我应该放什么值吗?或者我需要计算些什么呢?
谢谢!