调整大小时调用opengl函数

时间:2017-07-01 14:29:02

标签: opengl resize glfw

我想在调整大小时调用openGL函数以使游戏响应。

我有这个功能:

void Game::changeSize(int w, int h) {

    if (h == 0)
        h = 1;

    float ratio =  w * 1.0 / h;

    glMatrixMode(GL_PROJECTION);

    glLoadIdentity();

    glViewport(0, 0, w, h);

    gluPerspective(45.0f, ratio, 0.1f, 100.0f);

    glMatrixMode(GL_MODELVIEW);
}

我使用changeSize(m_width,m_height)在mainloop中调用它。 它设置视口,但在framebuffer_size_callback GLFW上我无法设置新的宽度和高度。

void framebuffer_size_callback(GLFWwindow* window, int width, int height)
{
    Game game;
    game.changeSize(width, height);
}

如何让它发挥作用?

由于

1 个答案:

答案 0 :(得分:0)

我通过在0上设置一个整数来修复它,以便在尚未调整大小的情况下执行该函数。

例如,

int resize = 0;

if(resize == 0){
game.changeResize(window, m_width, m_height);
}

//in the resize callback function
resize = 1;

game.changeResize(window, width, height);
相关问题