绘制光滑的圆
Drawing smooth circle
我正在使用 OpenTK (C#),但也欢迎提出 OpenGL 建议。
我有一个通过迭代生成的点列表,每个点围绕中心点 1 度,这意味着包括中心点在内有 361 个点。不同的方法点列表可能不同,没关系。我可以使用下面的简单顶点和片段着色器绘制圆。如何更改片段 and/or 顶点着色器以获得平滑的圆。
顶点着色器:
#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);
你好,你到底看到了什么? Post 截图。无论如何,对于光滑的边缘,我们有所谓的抗锯齿。
将此行用于您的 glControl 以启用它
glControl = new GLControl(new OpenTK.Graphics.GraphicsMode(32, 24, 0, 8));
我正在使用 OpenTK (C#),但也欢迎提出 OpenGL 建议。
我有一个通过迭代生成的点列表,每个点围绕中心点 1 度,这意味着包括中心点在内有 361 个点。不同的方法点列表可能不同,没关系。我可以使用下面的简单顶点和片段着色器绘制圆。如何更改片段 and/or 顶点着色器以获得平滑的圆。
顶点着色器:
#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);
你好,你到底看到了什么? Post 截图。无论如何,对于光滑的边缘,我们有所谓的抗锯齿。 将此行用于您的 glControl 以启用它
glControl = new GLControl(new OpenTK.Graphics.GraphicsMode(32, 24, 0, 8));