Лучший способ сделать постепенное обновление текстуры?(Сделать текстуру) - PullRequest
4 голосов
/ 07 июня 2011

Я хотел бы визуализировать текстуру в OpenGL, но вносить изменения в текстуру постепенно.

Вот как я представляю процесс:

  • Очистить Color & glViewport () до размера текстуры
  • Нарисуйте оригинальную текстуру (glOrtho или что-то), Как мне скопировать оригинал с идеальным качеством?
  • Рисовать пошаговые изменения
  • Очистить еще раз, установить размер окна просмотра
  • Нарисовать сцену и щелкнуть

Есть ли более оптимальный способ сделать это?

1 Ответ

5 голосов
/ 07 июня 2011

У вас есть два варианта. Если ваше оборудование не поддерживает FBO, вам придется делать то, что вы написали. Чтобы нарисовать исходную текстуру, просто нарисуйте квадрат размером с экран с [0,1] текстурными координатами. Обязательно используйте GL_NEAREST в качестве режима фильтрации и GL_CLAMP_TO_EDGE в качестве режима обтекания, чтобы получить точную копию изображения. Затем нарисуйте ваши постепенные изменения поверх этого. Когда вы закончите, вы можете получить текстуру из буфера кадров с помощью glCopyTexSubImage2D.

Когда ваше оборудование поддерживает FBO, вы можете добиться гораздо большей эффективности. В этом случае прикрепите текстуру к FBO и визуализируйте ее. Таким образом вы визуализируете непосредственно в текстуру, и вам не нужно копировать. Вам также не нужно копировать исходную текстуру, просто не очищайте кадровый буфер (текстуру) и выполняйте рендеринг прямо поверх предыдущих данных. Прочитайте некоторый вводный материал по объектам кадрового буфера для получения дополнительной информации.

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