Не зная больше о том, как нарисованы линии, я буду предполагать, что вы рисуете одну линию для каждой горизонтальной и вертикальной линии в сетке. Уравнения тумана оцениваются только в вершинах , поэтому, если ваши единственные вершины находятся на самых концах линий, у вас получатся специфические артефакты, такие как те, которые вы видите.
Основной способ решить эту проблему - ввести больше вершин; построить вершину для каждой точки пересечения и соединить каждую из них, чтобы создать сетку. Это приведет к большему количеству линий и вершин, но вы получите правильное поведение.
Я пойду более подробно ниже, чтобы помочь объяснить концепцию псевдонимов, которую вы, скорее всего, видите.
Помните, что любые значения, оцениваемые в вершинах (например, цвета вершин, нормали, координаты текстуры), будут интерполироваться линейно, чтобы покрыть треугольник / линию между ними. Представьте себе случай, когда мы хотим, чтобы пиксели в центре экрана были яркими, а краевые пиксели - темными. (Строго теоретический случай, но полезный для объяснения). Скажем, мы проводим линию от одного края до середины и до другого края. Скажем, мы делаем это только с 2 вершинами, по одной на каждом ребре. Затем мы вычисляем яркость обеих этих вершин, чтобы они были темными. Затем, чтобы нарисовать линию, OpenGL интерполирует между темным и темным, чтобы определить цвет линии. У линии нет возможности узнать, что она должна быть яркой в центре.
Итак, если вы добавите вершину в центр, она теперь вычислит, что центр яркий. Чем больше вершин вы добавите, тем точнее станет яркость.
Удачи и веселья. :)