![](/img/trans.png)
[英]Is there a way to know if there are more than one Spring Context in use?
[英]Is there a way to use more than one LWJGL context
我试图同时显示两个显示,使用线程并在2个不同的画布上显示它们。
软件统计:
我要运行的来自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上下文”
有没有办法解决这个问题,以显示每个线程进行的显示? 目前,只有一块画布可以显示。
LWJGL2仅允许单个显示,该显示可通过Display
类中的静态方法进行访问。 如果要使用多个显示器,则必须升级到版本3,GLFW使您可以更好地控制窗口。
但是,作为解决方法,您可以使用LWJGL Display和带有Canvas的JFrame。 然后,您可以渲染到帧缓冲区中 ,使用glGetTexImage获取像素数据并将其显示在画布中。
但是,由于这将无法提供良好的性能,并且由于LWJGL3已经稳定,因此建议您使用新版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.