2016-09-23 7 views
1

私はglTranslatef()関数を使って移動しようとしているキューブを持っています。 cubebの開始がz> 1で消えることを除いて、すべてが素晴らしいです。openGlオブジェクトは特定のzCoordで消えます

はここ

void owidget::initializeGL() 
{ 
    glDepthRange(0,100); 
    glEnable(GL_DEPTH_TEST); 
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 
    glOrtho(-5.0,5.0,-5.0,5.0,-500.0,500.0); 
} 

void owidget::paintGL() 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glPushMatrix(); 
     glTranslatef(xPos/100,yPos/100,zPos/100); 
     glRotatef(xRot,1,0,0); 
     glRotatef(yRot,0,1,0); 
     glRotatef(zRot,0,0,1); 
     cube(0.3); 
    glPopMatrix(); //Fuction for dislpaying cube 
} 

void owidget::resizeGL(int width, int height) 
{ 
    glViewport(0,0,width,height); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
} 

Here is a picture

+0

は、すべてが最終投影行列に変換します後、物事は、彼らが1> Zまたはz <あるときに消えることになっていることを覚えておいてください呼び出すことを意味します1。あなたが既にこれを知っていれば申し訳ありませんが、あなたがしたかどうかは疑問からは分かりませんでした。 – Steven2163712

答えて

2

あなたのセットアップは少し奇妙である私のコードです。 initializeGLでgluPerspectivezFarを正しく設定していますが、paintglのglLoadIdentityによって上書きされています。zFarNormalized Device Coordinatesの1にリセットします。

glMatrixMode(GL_PROJECTION);glMatrixMode(GL_MODELVIEW);に変更すると、これが機能するはずです。

glMatrixModeGL_MODELVIEWのデフォルト設定をお勧めします。 - このことで私はあなたが投影行列の編集が完了している時はいつでも、glMatrixMode(GL_MODELVIEW);

void owidget::initializeGL() 
{ 
    glDepthRange(0,100); 
    glEnable(GL_DEPTH_TEST); 
    glClearColor(0.0f, 0.0f, 0.0f, 0.0f); 
    glMatrixMode(GL_PROJECTION); 
    gluPerspective(0,650/600,20.0,100.0); 
    glMatrixMode(GL_MODELVIEW); 
} 

void owidget::paintGL() 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    glLoadIdentity(); 
    glPushMatrix(); 
     glTranslatef(xPos/100,yPos/100,zPos/100); 
     glRotatef(xRot,1,0,0); 
     glRotatef(yRot,0,1,0); 
     glRotatef(zRot,0,0,1); 
     cube(0.3); 
    glPopMatrix(); //Fuction for dislpaying cube 
} 

void owidget::resizeGL(int width, int height) 
{ 
    glViewport(0,0,width,height); 
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glMatrixMode(GL_MODELVIEW); 
} 
関連する問題