Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LWJGL(JAVA)中的OpenGL多线程_Java_Multithreading_Lwjgl - Fatal编程技术网

LWJGL(JAVA)中的OpenGL多线程

LWJGL(JAVA)中的OpenGL多线程,java,multithreading,lwjgl,Java,Multithreading,Lwjgl,在游戏开始时,我正在加载模型和其他东西,这需要一些时间,因此加载时会出现一个空的黑屏 因此,我想做的是将所有模型加载和显示列表创建放在一个线程中,并在另一个线程中进行(渲染)加载。现在我知道OpenGL不能很好地使用多线程,只能从一个线程调用OpenGL命令,所以我最初的线程解决方案不起作用。这两个线程都应该能够调用OpenGL命令:渲染和显示列表创建 有人知道(熟悉)一个简单的解决方案吗? 一个好的示例链接就可以了。您必须记住,用于解释GL命令的模型是客户机-服务器。也就是说,程序(客户端)发

在游戏开始时,我正在加载模型和其他东西,这需要一些时间,因此加载时会出现一个空的黑屏

因此,我想做的是将所有模型加载和显示列表创建放在一个线程中,并在另一个线程中进行(渲染)加载。现在我知道OpenGL不能很好地使用多线程,只能从一个线程调用OpenGL命令,所以我最初的线程解决方案不起作用。这两个线程都应该能够调用OpenGL命令:渲染和显示列表创建

有人知道(熟悉)一个简单的解决方案吗?
一个好的示例链接就可以了。

您必须记住,用于解释GL命令的模型是客户机-服务器。也就是说,程序(客户端)发出命令,这些命令由GL(服务器)解释和处理(取自规范)

因此,您可以轻松地从两个线程发送命令-这没有问题。但是,如果你不知道自己在做什么,那么通过玩多线程,你就打开了一个巨大的潜在蠕虫罐


加载时,我只需制作一个加载屏幕,并在加载了一些资源后进行更新。并非所有的问题都需要一个超级完美的解决方案——尤其不是像这样的小事:)

“这没问题”——当我从一个新线程调用GL11.glGenLists时,我会得到null异常。那是蠕虫还是什么?我从来没有用java做过OpenGL,我不明白人们为什么这么做。我喜欢java工作,但是OpenGL C++似乎是自然的选择——还有更多的资源。但请记住,您看不到其他线程数据。我只能证明使用了JOGL,但我对引用没有太多问题(这是一个非常薄的绑定,根本不需要面向对象)。OpenGL的好处当然是它的速度和可移植性,Java的好处是程序的业务逻辑通常更容易编写。没有多少折衷,但正如JOGL实现者所提到的,与C/C++实现相比,速度降低了10%。