Рисование гладкого круга - PullRequest
0 голосов
/ 11 февраля 2019

Я использую OpenTK (C #), но также приветствуются предложения OpenGL.

У меня есть список точек, сгенерированный итерацией, имеющий 1 градус на точку вокруг центральной точки, что означает, что есть 361 точка, включая центральную точку.Список точек может отличаться при разных подходах, это нормально.Я могу нарисовать круг с помощью простых шейдеров Vertex и Fragment.Как можно изменить фрагмент и / или вершинный шейдер, чтобы получить гладкий круг.

Вершинный шейдер:

#version 330
in  vec3 vPosition;
in  vec4 vColor;
out vec4 color;
out vec4 fPosition;
uniform mat4 modelview;
void main()
{
    fPosition = modelview * vec4(vPosition, 1.0);
    gl_Position = fPosition;
    color = vColor;
}

Фрагментный шейдер:

#version 330
in vec4 color;
in vec4 fPosition;
out vec4 outputColor;
void main()
{
    outputColor = color;
}

Код C #:

GL.DrawArrays(PrimitiveType.TriangleFan, 0, points.Length);

1 Ответ

0 голосов
/ 12 февраля 2019

Привет, что ты на самом деле видишь?Опубликовать скриншот.Во всяком случае, для гладких краев у нас есть то, что называется анти ализинг.Используйте эту строку для вашего glControl, чтобы включить его

glControl = new GLControl(new OpenTK.Graphics.GraphicsMode(32, 24, 0, 8));
...