Вы должны использовать вариацию, потому что на каждый фрагмент "влияет" более чем одна вершина (если вы не рендерите GL_POINTS
), поэтому вы должны интерполировать их по линии / многоугольнику. Последние версии GLSL позволяют задавать интерполяцию с плоским затенением, которая не интерполирует значение по всему примитиву, игнорируя значения из других вершин.
Я подозреваю, что вы хотите сделать так, чтобы только пиксели, соответствующие вершинам, отображались другим цветом, это правильно? В этом случае это не так просто, вы, вероятно, захотите сначала визуализировать заполненные многоугольники, а затем перерисовать как GL_POINTS
. В этот момент переменные переменные не интерполируются, потому что на каждый фрагмент влияет одна вершина.