OpenTK - VBO - 应用程序崩溃

时间:2016-04-14 10:37:36

标签: c# opengl vbo opentk

我正在学习OpenGL(使用OpenTK)。今天我想用VBO有效地渲染我的四边形。 当我调用渲染它崩溃时

=================================================================
Got a SIGSEGV while executing native code. This usually indicates a fatal error in the mono runtime or one of the native libraries used by your application.
=================================================================

Full stacktrace can be found here

这是我的渲染代码:

GL.EnableVertexAttribArray(0);

GL.BindBuffer(BufferTarget.ArrayBuffer, _vbo);
GL.VertexAttribPointer(0, _count, VertexAttribPointerType.Float, false, 0, 0);

GL.DrawArrays(PrimitiveType.Quads, 0, _count);

GL.DisableVertexAttribArray(0);

这就是我生成缓冲区的方法。

GL.GenBuffers(1, out _vbo);
GL.BindBuffer( BufferTarget.ElementArrayBuffer, _vbo );

Vector3[] vertices;
_count = vertices.Length;

GL.BufferData<Vector3>(BufferTarget.ArrayBuffer, new IntPtr(vertices.Length * Vector3.SizeInBytes), vertices, BufferUsageHint.StaticDraw);

PS:我没有使用任何颜色或纹理。

1 个答案:

答案 0 :(得分:0)

将渲染代码更改为此

        GL.BindBuffer( BufferTarget.ArrayBuffer, _vbo );
        GL.VertexPointer (3, VertexPointerType.Float, Marshal.SizeOf(new Vector3()), IntPtr.Zero);
        GL.EnableClientState (ArrayCap.VertexArray);

        GL.DrawArrays(PrimitiveType.Quads, 0, _count);

        GL.DisableClientState (ArrayCap.VertexArray);

它有效。 我在任何地方都使用 BufferTarget.ArrayBuffer (ElementArrayBuffer用于索引)。