Я знаю, что для сохранения / восстановления состояния матрицы вы используете стандартные операции push / pop.Мне не удалось найти подходящее соглашение для сохранения / восстановления состояния, например, при использовании glLineWidth () или glColor4ub ().
Кажется, в этом нет необходимости, если вы устанавливаете ширину линии или цветПравильно, если вы хотите что-то нарисовать, но я могу видеть пример того, где вы находитесь в своей собственной функции рисования, вызовите какую-то отдельную функцию рисования, которая изменяет ширину линии на вас без вашего ведома, а затем, когда вы продолжаете рисовать, она приходитне так, как ожидалось.
Чтобы исправить это, вы можете сбросить ширину линии после вызова любой функции, которую вы не знаете, что она делает, но которая кажется не элегантной, и я чувствую, что уже должно быть решениеэто, но я как-то пропустил это.
Для своего собственного кода я делал это в начале каждой функции рисования:
GLfloat savedLineWidth = 1.0f;
glGetFloatv(GL_LINE_WIDTH, &savedLineWidth);
glLineWidth(lineWidth);
И затем восстанавливал состояние вконец функции рисования примерно так:
glLineWidth(savedLineWidth);
Это действительно не поможет мне, если только я не предположу, что каждыйФункция рисования, о которой я не знаю, хороша и восстанавливает состояние самостоятельно.
Должен ли я сделать это предположение?Или я что-то упустил?