具有单个上下文的 OpenTK 多个 GLControl
OpenTK multiple GLControl with a single Context
Im 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();
我通过在线程上创建多个上下文来尝试这个,但它因
而崩溃
Error: 170" at "MakeCurrent()
个 glControl2
。 (即使 glControl2.Context.MakeCurrent(null)
在切换上下文之前也不起作用)
也许你有一些提示可以帮助我。
发布这个问题后我就找到了解决方案。
我在要渲染我的东西的线程上创建了一个新的 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
.
也许这可以帮助面临同样问题的人。
Im 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();
我通过在线程上创建多个上下文来尝试这个,但它因
而崩溃Error: 170" at "MakeCurrent()
个 glControl2
。 (即使 glControl2.Context.MakeCurrent(null)
在切换上下文之前也不起作用)
也许你有一些提示可以帮助我。
发布这个问题后我就找到了解决方案。
我在要渲染我的东西的线程上创建了一个新的 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
.
也许这可以帮助面临同样问题的人。