当前位置: 首页 > 知识库问答 >
问题:

LWJGL:在线程之间传递OpenGL上下文

虞安康
2023-03-14

我的程序中运行了两个线程。当我尝试在非主线程中使用OpenGL函数时,它抛出了一个IllegalStateException:当前线程中没有当前的OpenGL上下文。所以我的问题是,如何将上下文从主线程传递到另一个线程?我正在使用LWJGL 3。

共有2个答案

黄博艺
2023-03-14

看看这个例子。它使用了一个Drawable,您可以在两个Java线程中使用它。我不完全确定它是否仍然有效,因为这个类的很多内容都与LWJGL 2相关。我很快会测试它,并让你知道这个或你的方法是否更有效(将创建一个微小的微基准:)。

蓝宜
2023-03-14

我想我解决了这个问题,但我不能百分之百肯定这是最好的方法。你必须打电话给GLFW。glfwMakeContextCurrent(MemoryUtil.NULL);在要离开的线程中,然后调用GLFW。glfwMakeContextCurrent(窗口);GLContext。createFromCurrent();从要切换到的线程。

 类似资料:
  • 我在LWJGL 3中使用OpenGL,我得到以下错误; 这是RenderUtil类,initGraphics是从我的主类的构造函数中调用的。在使用GLFW创建了一个窗口后,我还尝试调用initGraphics,该窗口也生成了类似的错误消息。 另外,我没有使用多线程。要创建一个窗口,我调用方法from my main method."

  • 我正在使用入门示例(来自https://www.lwjgl.org/guide{which unchanged works fine}),但将其更改为使用OpenGL ES 3.0(出于与此问题无关的原因)。 我正在使用最新的LWJGL版本3.1.1,选择最小的OpenGL ES作为我的预设(从https://www.lwjgl.org/download)以及使用windows本机。(我正在运行W

  • 给定Clojure的并发模型,我如何确保所有LWJGL OpenGL更新函数都是从同一个线程调用的? 我熟悉C/C++中的线程。我熟悉Clojure的agent/atom/ref模型。然而,我并不熟悉Clojure中的“手动”并发/线程处理。 谢谢!

  • 问题内容: 我正在关注youtube上的教程,但是OpenGL存在我无法解决的问题。我不知道该如何解决。 主要 问题答案: 您需要调用glfwMakeContextCurrent将OpenGL上下文绑定到您的线程。LWJGL网站上也有一个工作示例。

  • 我有一个JPanel表单,其中包含一个JList和一些JButton。JPanel看起来像这样 当我单击Add List按钮时,会显示一个单独的JFrame表单。JFrame表单将如下所示 单击JFrame上的add按钮时,我需要将JTextfield(命名列表名)的值添加到上一个JPanel上的JList。我想知道如何将值从JFrame传递到JPanel?如有任何建议,将不胜感激。 下面是 JP

  • 问题内容: 我遇到了instanceof起作用的问题,然后却没有起作用。进入细节很困难,但是我认为这可能是问题所在: 阅读以下内容:http : //www.theserverside.com/news/thread.tss? thread_id=40229(搜索Thread.currentThread),这似乎意味着,即使这两个对象是同一类,也可以将它们传递给它们在具有不同类加载器的线程之间,i