gpt4 book ai didi

java - 有没有一种方法可以使用多个 LWJGL 上下文

转载 作者:行者123 更新时间:2023-11-30 08:13:25 24 4
gpt4 key购买 nike

我试图同时显示两个显示器,使用线程并将它们显示在两个不同的 Canvas 上。

软件统计:

  • 操作系统名称 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.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();
}

我的线程类的示例代码:

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 上下文”

有没有办法解决这个问题来显示每个线程所做的显示?目前只有一张 Canvas 显示。

最佳答案

LWJGL2 只允许单个显示,通过 Display 类中的静态方法访问。如果您想使用多个显示器,则必须升级到版本 3,其中 GLFW 可以让您更好地控制窗口。

但是,作为解决方法,您可以使用 LWJGL Display 和带有 Canvas 的 JFrame。然后你可以渲染成 framebuffer ,通过 glGetTexImage 获取像素数据并将其显示在 Canvas 中。

但是因为这样性能不太好,而且LWJGL3已经稳定了,所以我建议你使用新版本。

关于java - 有没有一种方法可以使用多个 LWJGL 上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30022199/

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