具有单个上下文的OpenTK多个GLControl

时间:2016-11-13 21:16:41

标签: c# opengl opentk

我为此m working on a program which should have multiple views of a model. I would like to use multiple GLControls。

是否有可能创建使用相同GraphicsContext的多个GLControl?

我在多线程环境中成功创建了这个,但是当时没有共享上下文。所以我必须为每个上下文加载模型,这很糟糕。

我对单线程环境的伪代码看起来像这样:

glControl1.MakeCurrent();
// Render here
glControl1.SwapBuffers();
glControl2.MakeCurrent();
// Render here too
glControl2.SwapBuffers();

我通过在线程上创建多个上下文但尝试使用

崩溃了
  

错误:170“at”MakeCurrent()

glControl2

。 (在切换上下文之前,即使glControl2.Context.MakeCurrent(null)也没有工作)

也许你有一些可以帮助我的提示。

1 个答案:

答案 0 :(得分:4)

在我发布此问题后,我找到了解决方案。

我在想要渲染我的东西的线程上创建了一个新的GraphicsContext。

//Here does a new thread start->
IGraphicsContext control2Context = new GraphicsContext(GraphicsMode.Default,glControl2.WindowInfo);
while(true)
{
    glControl1.MakeCurrent()
    //render
    GL.Flush();
    glControl1.SwapBuffers();

    control2Context.MakeCurrent(glControl2.WindowInfo);
    //render
    GL.Flush();
    glControl2.SwapBuffers();
}

如您所见,我没有使用glControl2.MakeCurrent()。相反,我创建了这个新的上下文control2Context

也许这可以帮助那些面临同样问题的人。