2016-07-21 9 views
0

glOrthoでカメラを動かすことに問題があります。私は中心に小さなクワッドを持っていますし、glOrthoを使ってカメラを動かそうとしていますが、動作していないようです。クワッドはまったく動かないので、カメラはあまり動かない。多分glOrthoの仕組みを理解できないかもしれませんか? ここまでは私のコードです。glOrthoを使ってカメラを動かす

void Camera::updateCamera(float x, float y, float zoom) 
{ 
    camX = x; 
    camY = y; 
    this->zoom = zoom; 
    viewWidth = 320; 
    viewHeight = 240; 
    //viewWidth = tan(60) * this->zoom; 
    //viewHeight = tan(45) * this->zoom;  
    glMatrixMode(GL_PROJECTION); 
    glLoadIdentity(); 
    glOrtho(camX - viewWidth, 
     camX + viewWidth, 
     camY - viewHeight, 
     camY + viewHeight, 
     -1, 
     1); 
    glMatrixMode(GL_MODELVIEW); 
} 

ここに私が適用されます。私はx軸に沿って25点移動しようとしました。

void Engine::renderAll() 
{ 
    x += 25; 
    glClear(GL_COLOR_BUFFER_BIT); 
    shader->use(); 
    camera.updateCamera(x, y, 1.0); 
    //shader->setUniform4fv("view", camera.getView()); 
    batchManager->renderBatches(); 
    SDL_GL_SwapWindow(window); 
} 
+0

シェーダは実際に投影行列を使用していますか? –

答えて

0

はい、あなたはglOrthoの仕組みを誤解していたと思います。 glOrthoの役割は、正射投影を使用して、2Dビューで3Dビューを変換することです。

位置決めカメラを3D空間で使用する場合、通常、正しい機能はLookAtと呼ばれます。一度、あなたは古いOpenGLを使っているようですが、glu関数を試すことができます。gluLookAt

PS。 moderm openGLでは、この関数は現在廃止予定です。私はあなたに近代的な方法を学ばせるように勧めます。

+0

ああ、私は2Dで働いていると言わざるをえなかったので、私はglOrthoを使用しようとしました。 – GroniumArgor

+0

問題はありません。 OpenGLは3Dライブラリ/フレームワークです。ちょうど1つの次元を一定に保ちなさい – Amadeus

+0

私は私のカメラのためのglOrthoを使用できないか。 – GroniumArgor

関連する問題