Возможно ли для glutPostRedisplay () перерисовать только определенные объекты? - PullRequest
1 голос
/ 31 августа 2011

У меня есть фрактальный объект, который создается со случайными значениями его переменных. Я использую C ++ и OpenGL. Но теперь, когда я собираюсь использовать glutTimerFunc для анимации других объектов на сцене, мне нужно вызвать glutPostRedisplay() для перерисовки сцены. Однако это повлияет на фрактальный объект, который полностью основан на случайных значениях, потому что glutPostRedisplay() будет заново заполнять новые случайные значения, а затем весь объект меняет внешний вид.

Как я могу заставить OpenGL перерисовывать только определенные объекты, а не все? Я думал о создании отдельной функции, чтобы сначала сгенерировать массив случайных значений, а затем передать массив функции, которая рисует фрактальный объект. Но массив может быть очень запутанным, потому что используется несколько разных случайных значений. Может ли быть лучший способ для этого?

1 Ответ

3 голосов
/ 31 августа 2011

OpenGL не знает, что такое «объект».Он знает только то, что вы ему даете.Если вы генерируете вершины с фракталами, то вам нужно либо сохранить достаточно информации, чтобы потом регенерировать фракталы, либо сохранить данные пост-генерации где-то где-то рядом.алгоритм создания ваших фракталов, да?Ну, они обычно работают по начальным номерам.Таким образом, вы можете просто получить начальное значение перед генерацией фрактала, а затем установить его на последующих рендерах, пока не наступит время смены фрактала.

В качестве альтернативы вы можете сделать фрактал за пределами экрана, чтобызатем бросьте к экрану.Это потребует использования объектов Framebuffer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...