
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
openglに法線の自動算出機能はありません。
glutSolid****(...)関数内で、各関数ごとにそれぞれ異なる実装が行われています。
glutのソースは公開されているので、確認されてみてはいかがでしょうか。
http://www.xmission.com/~nate/glut.html
ちなみに、glutSolidSphereの中身はこんな感じです。
static void
drawBox(GLfloat size, GLenum type)
{
static GLfloat n[6][3] =
{
{-1.0, 0.0, 0.0},
{0.0, 1.0, 0.0},
{1.0, 0.0, 0.0},
{0.0, -1.0, 0.0},
{0.0, 0.0, 1.0},
{0.0, 0.0, -1.0}
};
static GLint faces[6][4] =
{
{0, 1, 2, 3},
{3, 2, 6, 7},
{7, 6, 5, 4},
{4, 5, 1, 0},
{5, 6, 2, 1},
{7, 4, 0, 3}
};
GLfloat v[8][3];
GLint i;
v[0][0] = v[1][0] = v[2][0] = v[3][0] = -size / 2;
v[4][0] = v[5][0] = v[6][0] = v[7][0] = size / 2;
v[0][1] = v[1][1] = v[4][1] = v[5][1] = -size / 2;
v[2][1] = v[3][1] = v[6][1] = v[7][1] = size / 2;
v[0][2] = v[3][2] = v[4][2] = v[7][2] = -size / 2;
v[1][2] = v[2][2] = v[5][2] = v[6][2] = size / 2;
for (i = 5; i >= 0; i--) {
glBegin(type);
glNormal3fv(&n[i][0]);
glVertex3fv(&v[faces[i][0]][0]);
glVertex3fv(&v[faces[i][1]][0]);
glVertex3fv(&v[faces[i][2]][0]);
glVertex3fv(&v[faces[i][3]][0]);
glEnd();
}
}
void APIENTRY
glutSolidCube(GLdouble size)
{
drawBox(size, GL_QUADS);
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
既定のコンストラクタがありま...
-
pictureboxの画像を削除するには?
-
戻り値を返す関数の前に(void)...
-
gcc: incompatible pointer type
-
C# KeyDownイベントでショート...
-
【gcc・cygwin】multiple defin...
-
C#でテンキーの操作は可能でし...
-
静的でないメンバ関数の呼び出...
-
void*型の配列について
-
WNDPROC をクラスのメンバにも...
-
C# Controls.Addで動的に配置し...
-
アドレスを指定して関数を呼び...
-
メッセージマップ(ON_CONTROL_...
-
C++にてtemplateで受け取った任...
-
VC++でGetKeyboardStateがうま...
-
多重定義が起きている?--lnk20...
-
C++からCに直したい
-
(void)0 はどんな意味ですか
-
Delphiの定数とローカル変数の...
-
const_castのつかいどころを教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがありま...
-
静的でないメンバ関数の呼び出...
-
【gcc・cygwin】multiple defin...
-
戻り値を返す関数の前に(void)...
-
const_castのつかいどころを教...
-
多重定義が起きている?--lnk20...
-
C# Controls.Addで動的に配置し...
-
C++にてtemplateで受け取った任...
-
(void)0 はどんな意味ですか
-
C# KeyDownイベントでショート...
-
gcc: incompatible pointer type
-
C#でテンキーの操作は可能でし...
-
Notepad++の関数リスト表示の変...
-
[Visual C++ 6.0] コンパイル(...
-
C言語 ① 5秒間 1秒間隔で点滅を...
-
関数ポインタについて
-
void*型の配列について
-
pictureboxの画像を削除するには?
-
C言語 プロトタイプ宣言
-
メッセージマップ(ON_CONTROL_...
おすすめ情報