2012-02-16 2 views
0

Я пытаюсь обернуть мой мозг вокруг OpenGL ES шейдеров:Как визуализировать OpenGL ES 2.0 Фрагмент шейдеры

Vertex: Так вершинных шейдеров обработки вершин для всех объектов/сетки в glDrawXXX. Например, если у вас есть две треугольные сетки, образующие квадрат/квадрат. Это позволяет перемещаться по каждой вершине, устанавливать цвета и т. Д.?

Фрагмент: Все ли между вершинами?

Как получить ментальную визуализацию этого?

+0

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

+0

Я думаю - я не могу видеть разные. –

ответ

0

В самом простом, простом случае;

Вершинный шейдер вызывается для каждой вершины примитива. 100 Вершин = 100 вызовов активного вершинного шейдера. Затем последний этап генерирует треугольники из вершин.

Теперь для каждого треугольника, сгенерированного вершинным шейдером, он получает растрирование для генерации фрагментов (то есть потенциальных пикселей). Растеризатор линейно интерполирует между каждой вершиной треугольника, чтобы генерировать расположение фрагментов треугольника. Если вы запутались, возможно, думая, что шейдер фрагмента называется 1-к-1 вместе с вершинным шейдером. Нет, может быть от нуля до миллиона генерируемых фрагментов - это зависит от того, насколько большой (визуально) получившийся треугольник будет. Фрагмент-шейдер вызывается для каждого сгенерированного фрагмента. это зависит от вершин, выводимых вершинным шейдером.

Если треугольник находится далеко от точки зрения, это может быть несколько фрагментов. Если он близок к экрану, он может занимать весь видовой экран.