2017-07-03 7 views
0

ウィンドウに線を描こうとしましたが、と表示されません。私はglOrtho()と同じコードを使用していますが、それはその行を表示しています。セットウィンドウに私のラインが表示されるようにセットアップする必要がありますか?glFrustum()で表示されていませんか?

void init() { 
    glViewport(0, 0, w, h); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glFrustum(-2.0,2.0,-2.0,2.0, 1.0, 20.0); 
    glMatrixMode(GL_MODELVIEW); 
    glLoadIdentity(); 
} 

void display() { 
    glBegin(GL_LINES); 
    glColor3f(0.0f, 0.0f, 1.0f); 
    glVertex3f(0.0f, 0.0f, 2.0f); 
    glVertex3f(1.0f, 1.0f, 5.0f); 
    glEnd(); 
} 

答えて

2

OpenGLでは、カメラは負のZ軸を見ます。したがって、あなたのラインはカメラの後ろにあり、したがってクリップされてしまいます。

代わりにフロントでそれを描く:

glVertex3f(0.0f, 0.0f, -2.0f); 
glVertex3f(1.0f, 1.0f, -5.0f); 
+0

私のビューボリュームは、zは1から20の方法来るの上になければならないことを意味しglFrustum(-2.0,2.0、-2.0,2.0、1.0、20.0)です - 2と-5は細い範囲にありますか? – LilRazi

+0

1と20は、絶対座標ではなく、近平面と遠平面への距離です。平面は、原点からの距離で負のz座標に位置します。 ['glFrustum'のドキュメント(https://www.khronos.org/registry/OpenGL-Refpages/gl2.1/xhtml/glFrustum.xml)を参照してください:" *(left、bottom、-nearVal)* and * 、top、-nearVal)*ニアクリッピング面の点を指定する[...]。* -farVal *は、ファークリッピング面の位置を指定します。 – ybungalobill

関連する問題