gpt4 book ai didi

c# - 具有单个上下文的 OpenTK 多个 GLControl

转载 作者:行者123 更新时间:2023-11-30 14:48:44 26 4
gpt4 key购买 nike

正在开发一个应该有多个模型 View 的程序。为此,我想使用多个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

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

关于c# - 具有单个上下文的 OpenTK 多个 GLControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40578910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com