Таким образом, вы визуализируете набор точек и хотите, чтобы OpenGL «волшебным образом» заполнил закрытую область. Это невозможно. OpenGL не понимает, что эти точки охватывают какой-то регион. Вы даже не рисуете линейную полосу, это просто набор точек. Даже человек должен приложить разумные усилия к размышлению, чтобы увидеть, что точки «охватывают» область, не говоря уже о компьютере, или просто простой интерфейс для рисования точек, линий и треугольников на экране.
Вместо рисования точек просто нарисуйте многоугольник (используйте GL_POLYGON
или GL_TRIANGLE_FAN
вместо GL_POINTS
). Но если закрытая область невыпуклая, это не сработает во всех случаях. Вы всегда должны понимать, что OpenGL - это не что иное, как API для рисования. Он просто рисует точки, линии и треугольники на экране. Да, с причудливыми эффектами, но в целом он рисует простые примитивы. Он не управляет какой-либо базовой графической сценой или чем-то еще. В тот момент, когда нарисован примитив (например, одиночная точка, линия или треугольник), OpenGL больше его не помнит.
То, чего вы хотите достичь (если вы хотя бы измените точку, установленную на петлю линии, которая действительно охватывает область), не может быть достигнуто простыми средствами. В простейшем случае вам нужен какой-то алгоритм заливки , который заполняет область, заключенную в линии. Но для этого вы никоим образом не выигрываете от OpenGL, так как для этого требуется анализировать изображение на процессоре и устанавливать отдельные пиксели. И шейдеры тоже не могут сделать это простым (или каким-либо другим способом).