У меня есть вопрос относительно конвейера рендеринга OpenGL.
Недавно я читал теорию о геометрическом шейдере GLSL. Я думаю, что понимаю основы того, как создавать новую геометрию и назначать цвета новым вершинам. Я, однако, не уверен, какой цвет получит фрагмент, если одна из этих новых вершин будет иметь то же положение, что и вершина, поступающая из вершинного шейдера.
Рассмотрим этот пример: насколько я понимаю, я могу обрабатывать одну вершину с помощью вершинного шейдера. Я делаю некоторые преобразования и сохраняю позицию в glPosition. Кроме того, этой вершине можно присвоить цвет, например. сохранив его в glFrontColor. В качестве примера я даю ему красный цвет. Если все каналы имеют 32 бита, это будет 0xFFFFFFFF'00000000'00000000'00000000, верно? Далее задействован шейдер Geometry. Я хочу, чтобы мой геометрический шейдер испускал дополнительные вершины. По крайней мере, одна из них находится в том же положении, что и исходная вершина, полученная от вершинного шейдера. Однако ему назначается другой цвет, например. зеленый. Это будет 0x00000000'FFFFFFFF'00000000'00000000, верно? Рано или поздно, после обработки каждой вершины, происходит растеризация. Как я понимаю, обе вершины растеризованы и поэтому станут одним и тем же фрагментом. Итак, поехали. Какой цвет получит этот конкретный фрагмент? Есть какое-то автоматическое смешивание и фрагмент становится желтым? Или красный или скорее зеленый?
Этот вопрос может быть глупым. Но я просто не понимаю этого и был бы признателен, если бы кто-нибудь разъяснил мне это.
Если нет смешивания (что я предполагаю), как я могу создать эффект смешивания?