Java JOGL在用户调整窗口大小后查找当前屏幕大小
如何在JOGL实例中查找当前窗口大小。用户会手动对窗口执行此操作,这是我到目前为止所做的,但是这只会一直返回1920 x 1080。但是,我希望它返回当前窗口的宽度和高度Java JOGL在用户调整窗口大小后查找当前屏幕大小,java,opengl,graphics,jogl,Java,Opengl,Graphics,Jogl,如何在JOGL实例中查找当前窗口大小。用户会手动对窗口执行此操作,这是我到目前为止所做的,但是这只会一直返回1920 x 1080。但是,我希望它返回当前窗口的宽度和高度 @Override public void display(GLAutoDrawable glautodrawable) { GL gl = glautodrawable.getGL(); int newWidth = glautodrawable.getWidth(); int newHeight
@Override
public void display(GLAutoDrawable glautodrawable) {
GL gl = glautodrawable.getGL();
int newWidth = glautodrawable.getWidth();
int newHeight = glautodrawable.getHeight();
System.out.println(newWidth + " " + newHeight);
try {
render(gl, newWidth, newHeight);
} catch (IOException ex) {
Logger.getLogger(dataModelGLEventListener.class
.getName()).log(Level.SEVERE, null, ex);
}
}
另外,显示方法对窗口大小的响应非常晚,这是更好的方法吗
更新:我通过获取放置在其中的JFrame的大小,然后适当地重置画布大小来完成此操作
更新代码:
@Override
public void display(GLAutoDrawable glautodrawable) {
GL gl = glautodrawable.getGL();
GLU glu = new GLU();
float widthHeightRatio = width / height - 2.75f;
Rectangle r = dataModelJOGLFrame.instance.getBounds();
int h = r.height;
int w = r.width;
dataModelJOGLFrame.glcanvas.setSize(w, h);
System.out.println(h + " " + w);
flag = 1;
try {
render(gl, newWidth, newHeight);
} catch (IOException ex) {
Logger.getLogger(dataModelGLEventListener.class
.getName()).log(Level.SEVERE, null, ex);
}
dataModelJOGLFrame.menu.validate();
dataModelJOGLFrame.menu.repaint();
}
但是,这会导致菜单栏项在画布后面呈现,并且重新绘制和验证似乎对此没有影响,如何解决此问题?您使用的是什么操作系统?你能给我们提供更多的上下文以便我们能更好地帮助你吗?我正在使用Ubuntu,但是这也需要在WIndows和OS X上工作。实际上,GLCanvas是一个GLAutoDrawable,你可以通过调用getParent()来获取这个画布的容器。GLU对象应该在GLEventListener.init(GLAutoDrawable)中通过调用createGLU(GL)创建。您应该阅读以下内容:您正在使用什么操作系统?你能给我们提供更多的上下文以便我们能更好地帮助你吗?我正在使用Ubuntu,但是这也需要在WIndows和OS X上工作。实际上,GLCanvas是一个GLAutoDrawable,你可以通过调用getParent()来获取这个画布的容器。GLU对象应该在GLEventListener.init(GLAutoDrawable)中通过调用createGLU(GL)创建。您应该阅读以下内容: