Рисование гладкого круга
Я использую 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 ответ
Решение
Привет, что ты на самом деле видишь? Опубликовать скриншот. Во всяком случае, для гладких краев у нас есть то, что называется анти ализинг Используйте эту строку для вашего glControl, чтобы включить его
glControl = new GLControl(new OpenTK.Graphics.GraphicsMode(32, 24, 0, 8));