GLUTには球とティーポットを描画する関数が用意されている。
glutSolidSphere(radius, slices, stacks);
radiusは球の半径。slicesはZ軸まわりの分割数、stacksはZ軸にそった分割数。
glutSolidTeapot(size);
sizeはティーポットの大きさ。
ティーポットを描画してみたら、見た目がおかしかったので調べてみたところ、表裏が逆になっていることが分かった。ティーポットの場合は頂点の順番が右回りのときが表となっていた。この表裏の向きを切り替えるにはglFrontFace()を使う。
glEnable(GL_CULL_FACE); // カリングを有効に glCullFace(GL_BACK); // 裏面をカリング glFrontFace(GL_CCW); // 左回りを表 glFrontFace(GL_CW); // 右回りを表
実際に球とティーポットを描画したコードは次の通り。
// 球 glFrontFace(GL_CCW); // 左回りを表 glLoadIdentity(); glTranslated(0.0, 0.0, 0.0); glutSolidSphere(1.0, 20, 20); // ティーポット glFrontFace(GL_CW); // 右回りを表 glLoadIdentity(); glTranslated(3.0, 0.0, 0.0); glutSolidTeapot(1.0f);