スポンサーリンク
希にほしくなるCubeを描画する関数です。同種の物は探せばいくらでも出てくると思います。
OpenGLはデフォルトで反時計回りを面の表としているので、glFrontFace(GL_CCW)でカリングをし、面の向きが全てCubeの外側を向いていることを確認しています。実際に使用するときは外すと良いと思います。
//! @brief 立方体を描画 //! @param [in] width 立方体の一辺の長さ //! @return なし void cube(double width) { double ws = -width / 2; double we = width / 2; double xs = ws; double ys = ws; double zs = ws; double xe = we; double ye = we; double ze = we; glFrontFace(GL_CCW);//反時計回りが表 glEnable(GL_CULL_FACE);//カリングを有効にする glBegin(GL_QUADS); glColor3d(0.5, 0.5, 1.0); glVertex3d(xs, ys, zs);// glVertex3d(xs, ye, zs); glVertex3d(xe, ye, zs); glVertex3d(xe, ys, zs); glColor3d(0.0, 0.0, 1.0); glVertex3d(xs, ye, ze);// glVertex3d(xs, ys, ze); glVertex3d(xe, ys, ze); glVertex3d(xe, ye, ze); glColor3d(0.0, 0.5, 0.0); glVertex3d(xs, ye, zs);// glVertex3d(xs, ye, ze); glVertex3d(xe, ye, ze); glVertex3d(xe, ye, zs); glColor3d(0.5, 1.0, 0.5); glVertex3d(xs, ys, zs);// glVertex3d(xe, ys, zs); glVertex3d(xe, ys, ze); glVertex3d(xs, ys, ze); glColor3d(1.0, 0.5, 0.5); glVertex3d(xs, ys, zs);// glVertex3d(xs, ys, ze); glVertex3d(xs, ye, ze); glVertex3d(xs, ye, zs); glColor3d(1.0, 0.0, 0.0); glVertex3d(xe, ys, zs);// glVertex3d(xe, ye, zs); glVertex3d(xe, ye, ze); glVertex3d(xe, ys, ze); glEnd(); glDisable(GL_CULL_FACE);//カリングを無効にする }