OpenTK OpenGL GL绘图元素崩溃

rn0zuynd  于 2022-11-04  发布在  其他
关注(0)|答案(1)|浏览(219)

我正在使用OpenTK的GLFW Package 器和OpenGL Package 器。为了以防万一,我已经在x86和x64版本中运行了它。安装的nuget包是OpenTK.Graphics和OpenTK.Windowing.GraphicsLibraryFramework以及Visual Studio随它们安装的任何依赖项。
当我运行代码时,一个窗口打开但没有响应。窗口在打开几秒钟后崩溃。OpenGL和C#都没有向控制台输出调试信息。
如果我注解掉GL.DrawElements,窗口不会崩溃,并将正确地清除到黑屏,并响应输入,但没有任何东西绘制到屏幕上。
无论我将配置文件设置为OpenGlProfile.Core还是OpenGlProfile.Compat,此问题仍然存在。
GL.DrawArrays确实起作用(仅在comapat中)。
编码
第一个
着色器
第一个
我已经在这个问题上困了两天了。如果能提供一些帮助,甚至是一个线索,我将不胜感激。

编辑我需要在生成缓冲区后设置顶点属性。出于某种原因,我认为顺序并不重要。

9q78igpj

9q78igpj1#

您在创建缓冲区之前调用了VertexAttribPointer
document
如果指针不为NULL,则必须将非零命名缓冲区对象绑定到GL_ARRAY_BUFFER目标
只是改变了顺序。

GL.BindVertexArray(vao);

var vbo = GL.GenBuffer();
GL.BindBuffer(BufferTarget.ArrayBuffer, vbo);
GL.BufferData(BufferTarget.ArrayBuffer, sizeof(float) * _vertices.Length, _vertices, BufferUsageHint.StaticDraw);

var ibo = GL.GenBuffer();
GL.BindBuffer(BufferTarget.ElementArrayBuffer, ibo);
GL.BufferData(BufferTarget.ElementArrayBuffer, sizeof(int) * _indices.Length, _indices, BufferUsageHint.StaticDraw);

GL.EnableVertexAttribArray(0);
GL.VertexAttribPointer(0, 2, VertexAttribPointerType.Float, false, sizeof(float) * 2, 0);

相关问题