2016-04-25 21 views
0

私はOpenGLを学んでいます。太陽系を作るはずの私のプログラムには問題があります。カメラのOpenGLに関する問題(?)

まず第一には、ここでは、セットアップに私が使用するコードの私のModelView行列です:

glMatrixMode(GL_MODELVIEW); 
glLoadIdentity(); 
glRotatef(20, 1, 0, 0); 
glTranslatef(0, -20, -60); 

そして私はラインのループを使用して軌道を描き、太陽がgluSphereです:

glPushMatrix(); 
glColor3f(1, 0.4f, 0); 
glTranslatef(0, -2, 0); 
gluSphere(gluNewQuadric(), 4, 30, 30); 
glPopMatrix(); 

そして、ここです結果:

​​

しかし、その後、私はこのコードを使用して "ズームイン" するとき、:

if (key=='w') 
{ 
    glTranslatef(0, 1, 2.4); 
} 
else if (key=='s') 
{ 
    glTranslatef(0, -1, -2.4); 
} 

これが起こる:

enter image description here

ラインは、球の前にとどまります。私はそれがおそらく私がやっているばかげたことだと知っていますが、私はちょうど学び始めており、これは本当に私を遅くしています。 ありがとう!

答えて

5

深度テストを有効にしていない可能性があります。

glEnable(GL_DEPTH_TEST); 

また、通常はデフォルト設定で十分ですが、深度テストのパラメータを設定する必要があります。

glDepthfunc(GL_LESS); 

また、私は強くあなたがOpenGLのの即時モードとOpenGLの固定機能パイプライン、およびlearn Modern OpenGLの使用を停止することをお勧めするために、この時間を利用したいと思います。

+0

これは簡単でした!どうもありがとうございます! – Mykod

+0

@Mykodもしあなたがうまくいけば答えを受け入れるようにしてください。 – Xirema

+0

私は、1分でしかできません! OpenGLのイミディエイトモードについて、私はそれについてもっと読んでいますが、私は大学でOpenGLクラスを持っています。これが私のやり方です。それは悪いですか? :/ – Mykod

関連する問題