![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) 3Dモデルにおける法線の計算について(Python,OpenGL) 1 2023/04/25 23:46
- 数学 ベクトル方程式(ヘッセの標準形)についての質問 2 2022/04/23 18:00
- 物理学 ベクトルと座標系につきまして 1 2022/04/03 06:23
- 物理学 『F=ma』 3 2022/12/07 21:25
- 物理学 面積速度一定の法則を(1/2)r v sinθを使って証明する方法 2 2023/06/25 12:43
- 物理学 xy平面上を運動する物体Aがある。この物体の時刻tにおける位置ベクトルra(t)がra(t)=p + 2 2022/05/22 14:00
- 数学 単位法ベクトルの問題を教えて下さい。 4 2023/06/01 01:24
- 数学 数学の問題で法線ベクトルについて 5 2022/11/13 12:45
- 数学 3次元実ベクトル空間において, 平面 P:x-y+z+1=0 と直線 L:2(x-1)=-y=-z 3 2022/10/29 14:39
- 物理学 xy平面上を運動する物体Aがある。この物体の時刻tにおける位置ベクトルra(t)がra(t)=p + 1 2022/05/23 21:39
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
多重定義が起きている?--lnk20...
-
戻り値を返す関数の前に(void)...
-
静的でないメンバ関数の呼び出...
-
【gcc・cygwin】multiple defin...
-
int main()、void main()、void...
-
(void)0 はどんな意味ですか
-
既定のコンストラクタがありま...
-
C++にてtemplateで受け取った任...
-
gcc: incompatible pointer type
-
組み込みマイコン
-
クラス間でのクラスの共有?
-
C# KeyDownイベントでショート...
-
RENDERFILEについての質問です
-
ArduinoでMouse関数を使用して...
-
LNK2019:未解決の外部シンボル ...
-
Arduinoでの圧電スピーカーとタ...
-
DLLの関数呼び出しで引数がある...
-
C#でテンキーの操作は可能でし...
-
C# Controls.Addで動的に配置し...
-
void*型の配列について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
既定のコンストラクタがありま...
-
【gcc・cygwin】multiple defin...
-
Notepad++の関数リスト表示の変...
-
戻り値を返す関数の前に(void)...
-
ArduinoでMouse関数を使用して...
-
C++にてtemplateで受け取った任...
-
int main()、void main()、void...
-
多重定義が起きている?--lnk20...
-
C# KeyDownイベントでショート...
-
静的でないメンバ関数の呼び出...
-
VC++でGetKeyboardStateがうま...
-
C# Controls.Addで動的に配置し...
-
gcc: incompatible pointer type
-
void*型の配列について
-
const_castのつかいどころを教...
-
C言語 ① 5秒間 1秒間隔で点滅を...
-
(void)0 はどんな意味ですか
-
TimerProc コールバック関数を...
-
H8マイコンのシリアル通信につ...
-
DLLの関数呼び出しで引数がある...
おすすめ情報