【发布时间】:2010-07-18 16:52:50
【问题描述】:
我需要在 opengl 中有一个半球。我找到了一个 drawSphere 函数,我对其进行了修改以绘制一半的纬度(最终绘制了一半的球体),这正是我想要的。它正确地做到了这一点。
但是,我不知道应该如何处理 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();
}
}
有人知道我应该输入什么值吗?或者我需要计算什么?
谢谢!
【问题讨论】:
-
一般来说,方形纹理不能直接映射到(半)球体上;有不同的可能性。你的纹理是什么样的?
-
它是一个简单的吃豆人游戏,所以说实话,即使是纯黄色的纹理也可以,也许是一个有眼睛的黄色东西。它没有什么花哨的。