我正在使用GL_QUAD_STRIP
图元绘制一个 3d 球体,它可以工作,但我不知道如何设置纹理坐标。
我有一定数量的division
将我的球体分成相等数量的纬度和经度。因此,球体的顶点使用如下划分来近似
float x, y, z, dTheta=180/divisions, dLon=360/divisions, degToRad=3.14/180 ;
for(float lat =0 ; lat <=180 ; lat+=dTheta)
{
glBegin( GL_QUAD_STRIP ) ;
for(float lon = 0 ; lon <=360; lon+=dLon)
{
x = r*cosf(lat * degToRad) * sinf(lon * degToRad) ;
y = r*sinf(lat * degToRad) * sinf(lon * degToRad) ;
z = r*cosf(lon * degToRad) ;
glNormal3f( x, y, z) ;
glVertex3f( x, y, z ) ;
x = r*cosf((lat + dTheta) * degToRad) * sinf(lon * degToRad) ;
y = r*sinf((lat + dTheta) * degToRad) * sinf(lon * degToRad) ;
z = r*cosf( lon * degToRad ) ;
glNormal3f( x, y, z ) ;
glVertex3f( x, y, z ) ;
}
glEnd() ;
}