为什么glOrtho不做任何改变?

时间:2019-03-27 11:38:31

标签: c++ opengl freeglut opengl-compat

即使我已经调用了glOrtho(),该函数也不会更改任何内容。代码有什么问题?我错过了什么吗?

void glKeyCallback(unsigned char key, int x, int y){
  if (key == 'z'){
    width -= 10; height -= 10;
    cout << "Z" << endl;
    cout << width << " " << height << endl;
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 800, 600, 0, 0, 1);
    glMatrixMode(GL_MODELVIEW);
  }else if (key == 'x'){
    width += 10; height += 10;
    cout << "X" << endl;
    cout << width << " " << height << endl;
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0, 100, 100, 0, 0, 1);
    glMatrixMode(GL_MODELVIEW);
  }
}

当我按z或x时,我希望场景可以放大/缩小。但这并没有改变任何东西。作为记录,我已经在glutKeyboardFunc

上进行了注册。

1 个答案:

答案 0 :(得分:1)

OpenGL不是场景图,而是图形API。仅更改投影矩阵将无济于事。您还必须重新绘制内容。