簡體   English   中英

使用glOrtho移動相機

[英]moving camera using 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);
}

是的,我想您誤解了glOrtho的工作原理。 glOrtho的作用是使用正交投影將3D視圖轉換為2D視圖。

如果要在3D空間中定位相機,則正確的功能通常稱為LookAt。 一次,似乎我使用的是舊版OpenGL,您可以嘗試使用glu函數gluLookAt

PS。 在現代openGL中,此功能現在已棄用。 我建議您嘗試學習現代方式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM