为什么SharpGL.dll中出现异常

本文关键字:异常 SharpGL dll 为什么 | 更新日期: 2023-09-27 18:29:51

我正在尝试使用VBO绘制一些简单的东西,比如三角形。

github上提供的示例代码如下:

https://github.com/dwmkerr/sharpgl/blob/master/source/SharpGL/Samples/WinForms/ModernOpenGLSample/Scene.cs

下面的"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()函数进行编译?确定依赖项是否真的可用以及如何正确安装的最佳方法是什么?

为什么SharpGL.dll中出现异常

您可以使用openGLControl.OpenGL.IsExtensionFunctionSupported("glGenVertexArrays"); 检查是否支持该功能

但是,只要没有当前的渲染上下文,这将始终返回false(请参见此处)。这就是我抛出异常的原因,并且稍后在应用程序中调用方法对我有效(请注意,示例也给出了相同的异常)。

您可以检查并查看rendercontext是否使用openGLControl.OpenGL.RenderContextProvider.RenderContextHandle != IntPtr.Zero 设置

检查是否已使用正确的OpenGL版本进行初始化。默认值为1.0,您可以在OpenGLVersion.cs 中看到可用的枚举

创建控件时,请设置控件。调用EndInit()之前的OpenGLVersion属性如果您只对顶点缓冲区数组有问题,请检查RenderContentType是否设置为NativeWindow(即使您将OpenGLControl嵌入到窗体中)以访问对象缓冲区功能。

这两个步骤将解决你的问题。

我必须为XAML RenderContextType="FBO"中的SharpGL控件设置以下属性以避免出现异常。