Почему glOrtho ничего не меняет?
Эта функция ничего не меняет, хотя я уже вызвал 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 ответ
Решение
OpenGL - это не граф сцены, это API рисования. Простое изменение матрицы проекции ничего не изменит. Вы также должны перерисовать вещи.