2017-07-01 107 views
-1

我想在調整大小時調用openGL函數以使遊戲響應。調用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)調用它的主循環。 它設置視口,但在framebuffer_size_callback GLFW我無法設置新的寬度和高度。

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

如何讓它工作?

感謝

+0

你爲什麼要創建回調一個新的'Game'實例?那是一種單身類嗎? –

+0

在另一個類中使用void。 – Anoniem

+0

爲什麼downvote? – Anoniem

回答

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);