簡體   English   中英

如何使用`GL.DrawArrays`通過OpenTK繪制LineStrip?

[英]How to use `GL.DrawArrays` to draw LineStrip using OpenTK?

我是OpenTK的新手 我正在使用這種方法來用OpenTK畫線。

public static void DrawPolygon(Point[] points)
{
    GL.Begin(BeginMode.LineStrip);  
    int numberOfPoints = points.Length;
    for (int i = 0; i < numberOfPoints; i++)
    {
        GL.Vertex2(points[i].X, points[i].Y);
    }
    GL.End();
}

但是它說

GL.Begin已過時。 改用PrimitiveType重載

到處搜索時,我發現這種方法稱為即時模式 ,還有另一種使用DrawArrays方法的方法。 但是我找不到第二種方法的任何有效代碼示例。

使用DrawArrays方法或任何其他更快的方法,此代碼示例的等效代碼是什么。

這是我嘗試過的:

Vector2[] vertices = new Vector2[numberOfPoints];    
for (int i = 0; i < numberOfPoints; i++)
{
    vertices[i] = new Vector2((float)point[i].X, (float)point[i].Y);
}

int vbo;

GL.GenBuffers(1, out vbo);

GL.BindBuffer(BufferTarget.ArrayBuffer, vbo);
GL.BufferData(BufferTarget.ArrayBuffer, (IntPtr)(vertices.Length * BlittableValueType.StrideOf(vertices)), vertices, BufferUsageHint.StaticDraw);

GL.EnableClientState(ArrayCap.VertexArray);

GL.BindBuffer(BufferTarget.ArrayBuffer, vbo);
GL.VertexPointer(2, VertexPointerType.Float, Vector2.SizeInBytes, new IntPtr(0));
GL.DrawArrays(PrimitiveType.LineStrip, 0, numberOfPoints);


GL.Finish();

更換

BeginMode.LineStrip

PrimitiveType.LineStrip

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM