2016-09-28 7 views
0

私はそれを学ぼうとしていますが、私は本当に理解しません。 使用:私は描画ルーチンで行うだけのことだglFrustum、GL_MODELVIEW対GL_PROJECTION

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
glColor3f(1.0, 1.0, 1.0); 
glBegin(GL_QUADS); 
glVertex3f(-0.5, -0.5, 0.5); 
glVertex3f(0.5, -0.5, 0.5); 
glVertex3f(0.5, 0.5, 0.5); 
glVertex3f(-0.5, 0.5, 0.5); 
glEnd(); 

を。私は顔を描いており、それはすべてOKです。

今、私は同じ面を観察者から遠く、遠く見たいので、私はZ座標を変更します。問題は、画面に表示される顔のサイズが変わらないことです。

glFrustum(-15, 15, -15, 15, 0.1, 15)で錐台を設定しようとしましたが、すべてが消えます(顔は錐台のように見えません)。 私が望むのは、顔を描き、錐台を設定して、Z座標に沿って顔を動かすことです。顔が大きくなったり小さくなったりするのを見ます。私はGL_MODELVIEWGL_PROJECTIONがあることを知っていますが、私は彼らが何であるか理解していない、おそらくこれは問題です。

答えて

0

慣例により、カメラは、Z軸の負の方向、すなわち、のZ軸の点を、の外に見ます。クワッドはZ = 0.5の位置にあり、事実上カメラの背後にあります。また、あなたがカメラを回転させることができ

glBegin(GL_QUADS); 
glVertex3f(-0.5, -0.5, -0.5); 
glVertex3f(0.5, -0.5, -0.5); 
glVertex3f(0.5, 0.5, -0.5); 
glVertex3f(-0.5, 0.5, -0.5); 
glEnd(); 

glMatrixMode(GL_PROJECTION); 
glFrustum(-15, 15, -15, 15, 0.1, 15); 
glMatrixMode(GL_MODELVIEW); 
static const GLfloat m[] = { -1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1 }; 
glLoadMatrixf(m); 

言われて、あなたがレガシーOpenGLを捨てるために優れているように、あなたは負の座標にクワッドを移動する必要があり、少なくとも何かを見るために固定パイプライン機能を使用し、プログラム可能なパイプラインを教えてください。

関連する問題