如何在没有glBegin的情况下在OpenGL中绘制一条线

时间:2016-12-07 00:56:54

标签: c# opengl opentk

我查看了How to draw line in OpenGl?中的代码,但glBegin和glEnd被标记为已弃用。你如何在当前的OpenGL版本中划一条线?我找到了关于使用VBO的文章,以及讨论glVertexPointerglColorPointer的文章,但是这么多框架围绕使用着色器程序编译和链接来构建这些方法顶点属性位twiddling。是否有一种简单的方法来绘制一条线而不使用已弃用的函数?

我尝试了这个没有成功:

OpenTK.Vector2[] linepts = { new Vector2(0, 0), new Vector2(1, 1), new Vector2(50, 0), new Vector2(0, 50) };
int h = GL.GenBuffer();
GL.BindBuffer(BufferTarget.ArrayBuffer, h);
GL.BufferData<Vector2>(BufferTarget.ArrayBuffer, 16, linepts, BufferUsageHint.StreamDraw);
GL.DrawArrays(PrimitiveType.LineStrip, 0, 4);
GL.BindBuffer(BufferTarget.ArrayBuffer, 0);
GL.DeleteBuffer(h);

我不知道我是否使用DrawArrays进入正确的球场,或者如果该方法需要一堆乱七八糟的框架,那么我不会必然想要使代码有效。我只想找到最简单的代码来绘制一条适合在现代OpenGL中使用的行。

1 个答案:

答案 0 :(得分:2)

这是我可以创建的最简单的程序(使用OpenTK)来绘制一条线。

key