使用glOrtho

时间:2016-07-21 17:25:22

标签: c++ opengl

我在使用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);
}

1 个答案:

答案 0 :(得分:0)

是的,我猜你误解了glOrtho是如何运作的。 glOrtho的作用是使用正交投影在2D视图中转换3D视图。

如果您想在3D空间中使用定位相机,通常将正确的功能称为LookAt。有一次,我觉得你使用旧的OpenGL,你可以尝试使用glu函数gluLookAt

PS。在moderm openGL中,现在不推荐使用此函数。我建议你尝试学习现代的方法。