Java 有没有一种方法可以使用多个LWJGL上下文
我试图同时显示两个显示,使用线程并在两个不同的画布上显示它们 软件统计:Java 有没有一种方法可以使用多个LWJGL上下文,java,opengl,canvas,lwjgl,display-manager,Java,Opengl,Canvas,Lwjgl,Display Manager,我试图同时显示两个显示,使用线程并在两个不同的画布上显示它们 软件统计: 操作系统名称Linux 操作系统版本3.16.0-34-generic LWJGL版本2.9.3 OpenGL版本3.3(核心配置文件)Mesa 10.1.3 我尝试运行的GUI类中的代码: public UIMain2() { initComponents(); canvas1 = new Canvas(); canvas1.setSize(700, 350); canvas1.se
- 操作系统名称Linux
- 操作系统版本3.16.0-34-generic
- LWJGL版本2.9.3
- OpenGL版本3.3(核心配置文件)Mesa 10.1.3
public UIMain2() {
initComponents();
canvas1 = new Canvas();
canvas1.setSize(700, 350);
canvas1.setBackground(Color.WHITE);
canvas1.isDisplayable();
canvas1.setVisible(true);
jPanel2.add(canvas1);
dt1 = new DisplayThread(canvas1);
dt1.start();
canvas2 = new Canvas();
canvas2.setSize(700, 350);
canvas2.setBackground(Color.WHITE);
canvas2.isDisplayable();
canvas2.setVisible(true);
jPanel3.add(canvas2);
dt2 = new DisplayThread(canvas2);
dt2.start();
}
my thread类的示例代码:
public class DisplayThread extends Thread {
Canvas canvas;
String modelString = "";
Player player;
Camera camera;
DisplayManager m;
public DisplayThread(Canvas canvas) {
this.canvas = canvas;
}
public void run() {
m = new DisplayManager();
m.createDisplayJFrame(canvas);
...
}
...
}
我的DisplayManager类的示例代码:
public class DisplayManager {
private static final int WIDTH = 700;
private static final int HEIGHT = 350;
private static final int FPS_CAP = 120;
private static long lastFrameTime;
private static float delta;
//Display d = new Display();
public void createDisplayJFrame(Canvas canvas) {
ContextAttribs attribs = new ContextAttribs(3, 2)
.withForwardCompatible(true).withProfileCore(true);
try {
Display.setDisplayMode(new DisplayMode(WIDTH, HEIGHT));
Display.setParent(canvas);
Display.create(new PixelFormat(), attribs);
Display.setTitle("Potato");
} catch (LWJGLException ex) {
}
GL11.glViewport(0, 0, WIDTH, HEIGHT);
}
...
}
我得到的错误是:“一次只能实例化一个LWJGL上下文”
有没有办法显示每个线程的显示?目前只有一个画布显示一个显示。LWJGL2只允许一个显示,可以通过
display
类中的静态方法访问。如果你想使用多个显示器,你必须升级到版本3,在那里GLFW可以更好地控制你的窗口
但是,作为一种解决方法,您可以使用LWJGL显示和带有画布的JFrame。然后,您可以渲染到一个场景中,获取像素数据并将其显示在画布中
但由于这不会有好的性能,而且LWJGL3已经很稳定,我建议您使用新版本