如何在C#winform窗口中调用C ++ OpenGL代码?

时间:2014-09-18 16:29:47

标签: c# windows winforms winapi opengl

我需要在顶部编写一个带有工具条的窗口,中间的OpenGL窗口和底部的状态行: enter image description here

我不会对在win32中编程GUI元素感到兴奋。我有一些使用C#编程winforms的经验,并希望这样做。

问题是如何实现OpenGL窗口? 据我所知,OpenTK附带了一个GLControl .net组件,我可以添加到表单中。

但是我已经有了我将在C ++中使用的OpenGL代码。 我不想将其移植到OpenTK,而是直接使用它。

我怎样才能做到这一点?

我还应该解释一下,我的窗口不是主窗口。它正在我正在实现插件的另一个程序中运行。

2 个答案:

答案 0 :(得分:1)

OpenGL上下文是每线程状态。如果在C#中使用OpenTK来创建上下文,那么从同一个线程调用的任何C ++代码都会自动使用它。

答案 1 :(得分:1)

以下是您需要做的事情:

  1. 将您的C ++代码隔离到dll中。
  2. 创建一个C#应用程序并创建一个OpenGL上下文。使它成为当前的背景。
  3. 使用pinvoke通过C#代码调用C ++代码的本机函数。您可以公开可由C#应用程序调用的一个或多个入口点。
  4. 我从未亲自尝试过,但从理论上说这应该有效。