我正在尝试使用VBO绘制一些简单的东西,比如一个三角形。
github上提供了示例代码:
下面的“using”语句可以为我正确地编译。
using SharpGL;
using SharpGL.SceneGraph;
using SharpGL.VertexBuffers;我的程序在下面这一行崩溃:
vertexBufferArray.Create(gl);它给了我以下例外:
An unhandled exception of type 'System.Exception' occurred in SharpGL.dll
Additional information: Extension function glGenVertexArrays not supported如果程序的一个依赖项不受支持,为什么要使用Create()函数进行编译?确定依赖项是否实际可用以及如何正确安装它的最佳方法到底是什么?
发布于 2015-01-04 18:24:16
您可以使用openGLControl.OpenGL.IsExtensionFunctionSupported("glGenVertexArrays");检查该函数是否受支持
但是,只要不存在当前呈现上下文,这将始终返回false (参见here)。这就是让我抛出异常并在应用程序后面调用方法的原因(请注意,示例也给出了相同的异常)。
您可以检查并查看是否使用openGLControl.OpenGL.RenderContextProvider.RenderContextHandle != IntPtr.Zero设置了rendercontext
发布于 2020-10-27 18:57:18
检查您是否使用正确的OpenGL版本进行了初始化。默认值为1.0,您可以在OpenGLVersion.cs中看到可用的枚举
在创建控件时,请在调用EndInit()之前设置control.OpenGLVersion属性。如果只有顶点缓冲区数组有问题,则还要检查RenderContextType是否设置为NativeWindow (即使您将OpenGLControl嵌入到窗体中)才能访问对象缓冲区功能。
这两个步骤可以解决你的问题。
发布于 2020-10-30 12:46:12
我必须在XAML RenderContextType="FBO"中为SharpGL控件设置以下属性以避免异常。
https://stackoverflow.com/questions/26818188
复制相似问题