次のコードを解説してください。

void viewOrthoFixed() {
glMatrixMode(GL_PROJECTION);
glPushMatrix();
glLoadIdentity();
glOrtho(0, 640, 480, 0, -1, 1);
glMatrixMode(GL_MODELVIEW);
glPushMatrix();
glLoadIdentity();
}
void viewPerspective() {
glMatrixMode(GL_PROJECTION);
glPopMatrix();
glMatrixMode(GL_MODELVIEW);
glPopMatrix();
}

こう使います。

// この時点ではパースペクティブモード
viewOrthoFixed();
ほげほげ
viewPerspective();

※何をやるのかは分かるんですが、どうしてこうやるのかが分かりません…

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2005/03/07 02:28:16
  • 終了:--

回答(2件)

id:informalattract No.1

informalattract回答回数5ベストアンサー獲得回数02005/03/07 03:06:09

ポイント24pt

OpenGLのプログラムのようですね。

はずした回答になるかも知れませんが

私も3次元描画のプログラムを少しだけ勉強して挫折したことがありますが(非OpenGL)、

3次元描画で「何をやっているのか?」を理解したいの場合、「行列」に関する数学の知識が必要になるようです。

参考サイト:

具体的なOpenGLの関数に関してはこのへんにサンプルと解説があるようです。

id:k_ahiru

m(_ _)m

# でもコードの解説じゃないですよね?

コードの解説をしてくれる方キボー

2005/03/07 03:34:18
id:terra5 No.2

terra5回答回数57ベストアンサー獲得回数02005/03/07 23:52:16

ポイント26pt

http://www.seshop.com/detail.asp?pid=2730

OpenGLリファレンスマニュアル 第2版:SEshop.com/商品詳細

void viewOrthoFixed() {

glMatrixMode(GL_PROJECTION);// 射影変換行列設定

glPushMatrix();// 現在の射影変換行列を保存

glLoadIdentity();// 単位行列を設定(無変換行列を設定)、pushでは行列は変化しないため

glOrtho(0, 640, 480, 0, -1, 1);// 正射影変換設定(横 0〜640, 縦 480〜0(上が0), 奥行き(手前-1〜奥1)

glMatrixMode(GL_MODELVIEW);// モデルビュー変換行列設定

glPushMatrix();// 現在のモデルビュー行列を保存

glLoadIdentity();// 単位行列を設定(無変換行列を設定)

}

void viewPerspective() {

glMatrixMode(GL_PROJECTION);// 射影変換行列設定

glPopMatrix();// 射影変換行列を復元

glMatrixMode(GL_MODELVIEW);// モデルビュー変換行列設定

glPopMatrix();// モデルビュー行列を復元

}

// 多分、3D表示の設定やら描画やら

// この時点ではパースペクティブモード

viewOrthoFixed(); // 現在の状態を保存し、640x480(VGAサイズ)の座標で描画できるように設定

ほげほげ // 多分2D表示のイメージ

viewPerspective(); // 以前の表示設定に復元

id:k_ahiru

m(_ _)m

2005/03/08 00:33:51

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません