2

EDIT2:我找到了解决方案!我需要RenderContextType="FBO"在我的 windows 窗体的 .xaml 文件中的 OpenGLControl 中添加。

我正在开发基于 MVC 模式的游戏。视图在 C# 中,模型是 C++ 库。我选择 C++/CLI 作为它们之间的控制器。目前,这项工作正常。我的 C++ 库是我制作的一个游戏引擎,它使用 OpenGL 进行渲染。所以我在 C# 端的 WPF 应用程序中使用了 SharpGL。然后,我通过控制器将 OpenGL 事件链接到模型。这也很好用。我可以在 C++ 端调用基本的 OpenGL 函数,如 glVertex、glGenList 等。

现在,问题来了。我发现 OpenGL 列表对我的需要来说太慢了。所以我想使用VBO。我已经在另一个使用 C++ 的项目中使用了它。所以我在我的项目中包含了 glew,而不会忘记调用 glewInit() 并检查错误。

问题是当我调用 glGenBuffer 时,它会触发访问冲突异常。我调查了这个问题,发现 glew 告诉我我不支持 OpenGL 2.0 ......但这是错误的,因为我知道我的计算机支持它,我有另一个 C++ 项目使用这些函数并且 glew 告诉我 OpenGL 2.0 是支持的。

然后我尝试通过 wglGetProcAddress 加载扩展。但它返回一个空指针。

所以我认为即使 glewInit() 没有抛出任何错误,也许我没有上下文。所以我尝试从 SharpGL.RenderContextProvider 获取 deviceHandle 和 renderHandle 并将它们发送到我的 C++ 模型,然后调用 wglMakeCurrent 来获取上下文。该函数不返回任何错误,但对我的问题没有任何改变。

所以,是的,现在我真的不知道该怎么办。任何帮助将不胜感激!

谢谢!

编辑:重要的是要补充一点,在创建上下文之后和调用扩展函数之前我已经调用了 glewInit() 。

4

0 回答 0