GLSL Как получить положение вершины после того, как шейдер обработает ее? - PullRequest
2 голосов
/ 19 февраля 2012

Я написал программу, которая имитирует мягкие тела с помощью пружин.Это выглядит красиво, но проблема в том, что он потребляет много процессорного времени.Поэтому я не могу запустить его на своем ноутбуке или любом другом компьютере не высокого класса.

Я подумал, что было бы неплохо написать вершинный шейдер и перенести логику в графический процессор.Я прочитал несколько уроков и создал шейдер Toon, поэтому я подумал (неправильно), что я готов к работе.

Большая проблема, с которой я столкнулся, заключается в том, что мне нужно знать старую позицию вершины для вычисления новойодин.Я не знаю, как я могу получить положение вершины, чтобы я мог отправлять ее обратно в шейдеры каждый кадр?

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

1 Ответ

1 голос
/ 19 февраля 2012

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

...