Можно ли создать текстуру только в шейдерном фрагменте? - PullRequest
0 голосов
/ 02 марта 2019

У меня 2-х проходный конвейер рендеринга - отложенное затенение - для рендеринга облака точек(GLSL 4.30 и c ++ 17)

Шейдерный конвейер:

Pointloud.vertex -> Pointcloud.fragment -> FullscreenQuad.vertex -> Deferred.фрагмент

Чего я хочу добиться - это собрать некоторые данные из состояния Pointloud.vertex -> Pointcloud.fragment и в виде текстуры отправить их в шейдер Deferred.fragment.

Данные, такие как: Vertex_ID, Frag-Coord.z ​​и координаты текстуры (доступно в части Pointloud.vertex)

В основном я хочу создать 2 текстуры в шейдере Pointcloud.fragment, наданное положение координат текстуры хранит информацию о глубине, а в другой текстуре хранится идентификатор вершины с теми же координатами.

Можно ли создавать и записывать текстуры локально в шейдерах?Важно решить эту проблему без влияния c ++.

1 Ответ

0 голосов
/ 02 марта 2019

Шейдеры не могут распределять ресурсы, такие как текстуры и буферы.Они могут использовать ресурсы, но не могут создавать их ex nihilo.Вы должны создать любые такие ресурсы в приложении.Если у вас нет возможности изменить код приложения, то ничего не поделаешь.

...