如何使用OpenTK正确绘制多边形

时间:2015-09-10 06:51:27

标签: c# opengl graphics drawing opentk

我是 OpenTK 的新手,我使用以下代码使用 OpenTK

绘制大量多边形
public static void DrawPolygon(Point[] points)
{
    GL.Begin(BeginMode.Polygon); //IF I Change this to LineStrip every things will be OK
    int numberOfPoints = points.Length;
    for (int i = 0; i < numberOfPoints; i++)
    {
        GL.Vertex2(points[i].X, points[i].Y);
    }
    GL.End();
}

这是在调用DrawPolygon

之前执行的配置代码
GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
GL.Ortho(0, width, 0, height, -1, 1); // Bottom-left corner pixel has coordinate (0, 0)
GL.Viewport(0, 0, (int)width, (int)height); 

GL.ClearColor(drawing.Color.Transparent);

GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

GL.MatrixMode(MatrixMode.Modelview);
GL.LoadIdentity();
GL.Color3(pen.Color);
GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
GL.PointSize(5f);
GL.LineWidth(2f);

当我将渲染的图像作为png保存到磁盘时使用此代码,结果将如下所示

enter image description here

结果:GL.Begin(BeginMode.Polygon);

但是,如果我将DrawPolygon的第一行更改为GL.Begin(BeginMode.LineStrip);,则多边形将按预期呈现,如下所示:

enter image description here

结果:GL.Begin(BeginMode.LineStrip);

任何人都知道为什么在使用BeginMode.Polygon时会出现这两条额外的行?

0 个答案:

没有答案