绘制平滑的圆

时间:2019-02-10 21:26:56

标签: opengl opentk

我正在使用OpenTK(C#),但也欢迎OpenGL建议。

我有一个通过迭代生成的点列表,该点列表在中心点周围每个点有1度,这意味着有361个点包括中心点。点列表可能会因不同的方法而有所不同,没关系。我可以使用以下简单的“顶点和片段”着色器绘制圆。如何将片段和/或顶点着色器更改为具有平滑的圆。

顶点着色器:

#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 :(得分:0)

您好,您实际上看到了什么?发布屏幕截图。无论如何,对于光滑的边缘,我们都有所谓的抗锯齿。 使用此行将您的glControl启用

void takesFunctionPointer(void (*)());

struct MyFunctor {
    void operator()();
};

// ...

takesFunctionPointer([] { return MyFunctor{}(); });