为什么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()函数进行编译?确定依赖项是否真的可用以及如何正确安装的最佳方法是什么?
您可以使用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控件设置以下属性以避免出现异常。