ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

球とティーポット

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);