который отображает на экране правильный шестиугольник.
А проблема вот в чем:
при увеличении размеров окна рисунок уменьшается, а при уменьшении - увеличивается.
Хотелось бы узнать, в чем причина столь странного поведения.
Заранее спасибо.
void glutReshapeFunc(void (*func)(int width, int height));
Единственный параметр - это указатель на функцию, отвечающую за изменение размеров окна, которая как видно должна принимать два параметра width и height, соответственно ширина и высота нового (измененного) окна.
дальше читай доки по командам opengl и думай что ж такого странного делается в твоей функции winReshapeFunc
вот это,
gluOrtho2D(0.0, (GLdouble) newWidth, 0.0, (GLdouble) newHeight);
меняем на это,
gluOrtho2D(0.0, (GLdouble) 400, 0.0, (GLdouble) 400);
и проекция перестанет зависеть от размера области вывода/окна
а вообще обычно надо виевпорт заново выставлять а не проекцию в таких случаях.
вот это,
gluOrtho2D(0.0, (GLdouble) newWidth, 0.0, (GLdouble) newHeight);
меняем на это,
gluOrtho2D(0.0, (GLdouble) 400, 0.0, (GLdouble) 400);
и проекция перестанет зависеть от размера области вывода/окна
а вообще обычно надо виевпорт заново выставлять а не проекцию в таких случаях.
Спасибо. Разобрался. Изменил код winReshapeFunc на следующий
Теперь все работает как надо. Оффтопик: увы, я не ожидал от рекомендованного мне издания такого подвоха.
Все примеры, приведенные в книге обладают досадными недочетами. Вероятно, чтоб освоили лучше