2017-07-01 10 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); 
関連する問題