2012-04-28 14 views
1

gluPerspectiveまたはglFrustumを組み合わせて使用​​することを示唆するチュートリアルがたくさんありましたが、適切なマトリックスを設定するのは困難でした。 + z軸を見下ろす45度の斜視図を設定するにはどのようなコードが必要ですか?3D OpenGL透視投影を設定する最も簡単な方法

これまでのところ私が持っている:

glShadeModel(GL_SMOOTH); 
glClearColor(0,0,0,0); 
glClearDepth(1); 
glDepthFunc(GL_LEQUAL); 
glViewport(0,0,width,height); 
glEnable(GL_DEPTH_TEST); 
glMatrixMode(GL_PROJECTION); 
glLoadIdentity(); 
gluPerspective(45,1,0.1,100); 
glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 

しかし、それは動作するようには思えません。私が得ることは、物を描こうとすると黒い画面になります。

EDIT:

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 
glColor3ub(255,255,255); 
glBegin(GL_TRIANGLE_STRIP); 
glVertex3f(20,20,20); 
glVertex3f(20,30,20); 
glVertex3f(30,20,20); 
glVertex3f(30,30,20); 
glEnd(); 
+0

何を「描いていますか?どこに描こうとしていますか? –

+0

ポイントは(1,1,1)と(2,50,23)になります。彼らは現れません。 – slartibartfast

+0

三角形や点を描いていますか? –

答えて

1

編集:ここでは、最小限の描画コードがあります:

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); 
glColor3ub(255,255,255); 
glBegin(GL_TRIANGLE_STRIP); 
glVertex3f(20,20,20); 
glVertex3f(20,30,20); 
glVertex3f(30,20,20); 
glVertex3f(30,30,20); 
glEnd(); 

あなたの頂点座標は、視聴ボリュームの外の道をうそ。最初に、OpenGLはデフォルトで負のZ軸を「見下ろす」ので、Z座標は選択したnearとfarのクリッププレーンに対して-100 < z < -0.1でなければなりません。

しかし、Z座標の記号を反転しても、頂点は45°FOVの外側にあります。 (20,0,20)は視軸から45°、(30,0,20)はさらに遠い。 (+/- 1、+/- 1、-5)のように(0,0、-5)の周りに頂点のコーディネートを中心にしてみてください

2

な(1,1,1)上の点として物事と(2,50,23):ここでは、最小限の描画コードです。彼らは現れません。

あなたの問題があります。デフォルトのOpenGLカメラでは、カメラがに向かって+ Z軸がとなっています。そして、カメラがZ = 0にあるので、Z位置が> 0である任意の位置がカメラの後ろにある。

カメラの前にポイントを移動します。彼らは少なくとも-Zの位置を持つ必要があります。

+0

ありがとうございますが、私はまだ何も見ません。 – slartibartfast

+0

バッファ交換関数呼び出しはどこにありますか? –

+0

私はSFMLを使用しています。バッファ交換を処理するはずの 'window.Draw()'を呼び出します。 – slartibartfast

関連する問題