как получить глубину и цвет визуализированного пикселя - PullRequest
0 голосов
/ 13 декабря 2018

Я хотел бы получить высоту z каждого пикселя отрисованного объекта в сцене.Мне также понадобится получить цвет, который отображается.

Какую технологию opengl реализовать?

1 Ответ

0 голосов
/ 13 декабря 2018
  1. glReadPixels и код стороны процессора

    используйте glReadPixels для получения буферов RGB и Depth.Вот примеры для обоих:

    Это будет считывать буферы в доступную для CPU память.Этот способ медленный (из-за синхронизации), но должен работать на любой платформе.

  2. Визуализация FBO в текстуру и шейдер графического процессора

    Более быстрый методиспользовать FBO и визуализировать в текстуру и использовать этот вывод в следующем проходе рендеринга в качестве входной текстуры для вычисления ваших вещей внутри шейдеров.Это, однако, не будет работать должным образом на Intel и может потребоваться дополнительная настройка кода между nVidia и AMD .

    Если у вас есть вывод на пиксельиспользуйте один QUAD, покрывающий ваш экран, как второй проход рендеринга.

    Если вы получили один вывод для всего экрана, вместо этого используйте один POINT рендер и вычислите все в фрагментном шейдере (отсканируйте всю текстуру внутри)как-то так:

    Разница в том, что с помощью шейдеров и FBO вы не переноситеданные между GPU / CPU , поэтому он работает быстрее.

    Содержимое целевых текстур все еще может быть прочитано с помощью CPU с использованием текстур GL функции

  3. вычисляют шейдеры GPU

    Есть также вычислительные шейдеры , но я их еще не использовал, поэтому яЯ просто предполагаю, однако, с ними это можетможно делать все за один проход, а также форма результата и вычислений не должна быть столь же ограничивающей.* Отложенное затенение , поэтому поиск таких тем / руководств может помочь.

...