我想在调整大小时调用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);
}
如何让它发挥作用?
由于
答案 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);