Opengl 1920*1080分辨率的LWJGL中的相机焦距不居中

Opengl 1920*1080分辨率的LWJGL中的相机焦距不居中,opengl,camera,lwjgl,display,projection,Opengl,Camera,Lwjgl,Display,Projection,我正在学习LWJGL2系列教程,到目前为止,一切都进展顺利,直到我决定将1280x720分辨率改为1920x1080全屏。相机突然偏离中心,这意味着当我看一个点并向前移动时,它不会移动到那个点 我已经做了: 我发现一个家伙遇到了同样的问题,但他忘了设置视口,设置视口就成功了。我还发现,无论是否全屏,相机仍然以1280x720为中心。我搜索了我所有的代码,只将宽度和高度赋给最终的静态int变量一次,然后将它们用于投影矩阵之类的东西。我试过800x600,1000x6001700x1000,一切都很

我正在学习LWJGL2系列教程,到目前为止,一切都进展顺利,直到我决定将1280x720分辨率改为1920x1080全屏。相机突然偏离中心,这意味着当我看一个点并向前移动时,它不会移动到那个点

我已经做了: 我发现一个家伙遇到了同样的问题,但他忘了设置视口,设置视口就成功了。我还发现,无论是否全屏,相机仍然以1280x720为中心。我搜索了我所有的代码,只将宽度和高度赋给最终的静态int变量一次,然后将它们用于投影矩阵之类的东西。我试过800x600,1000x6001700x1000,一切都很好

我在该分辨率中的问题可能会影响显示和渲染?发生了什么事

以下是显示代码:

public static void createDisplay() {
        
        ContextAttribs attribs = new ContextAttribs(3,2)
        .withForwardCompatible(true)
        .withProfileCore(true);
        
        try {
            DisplayMode displayMode = null;
            DisplayMode[] modes = Display.getAvailableDisplayModes();

            for (int i = 0; i < modes.length; i++) //With or without doesn't change anything
             {//Even if I juste create a DisplayMode with width and height only it is still off centered for 1920*1080
                 if (modes[i].getWidth() == width
                 && modes[i].getHeight() == height
                 && modes[i].isFullscreenCapable())
                   {
                        displayMode = modes[i];
                   }
             }
             
            Display.setDisplayMode(displayMode);
            Display.setFullscreen(true); //With or without doesn't change anything
            Display.create(new PixelFormat(),attribs);
            Display.setTitle("CubeLand");
        } catch (LWJGLException e) {
            e.printStackTrace();
        }
        
        GL11.glViewport(0, 0, width, height);
    }
谢谢你的帮助

float aspectRatio = (float) DisplayManager.width / (float) DisplayManager.height;
        float y_scale = (float) ((1f / Math.tan(Math.toRadians(FOV / 2f))));
        float x_scale = y_scale / aspectRatio;
        float frustum_length = FAR_PLANE - NEAR_PLANE;

        projectionMatrix = new Matrix4f();
        projectionMatrix.m00 = x_scale;
        projectionMatrix.m11 = y_scale;
        projectionMatrix.m22 = -((FAR_PLANE + NEAR_PLANE) / frustum_length);
        projectionMatrix.m23 = -1;
        projectionMatrix.m32 = -((2 * NEAR_PLANE * FAR_PLANE) / frustum_length);
        projectionMatrix.m33 = 0;