在1920 * 1080分辨率下,相机对焦不在LWJGL中居中

问题描述

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

我已经做了什么: 我发现一个遇到相同问题的人,但他忘记设置视口,而设置视口就成功了。我还发现全屏显示还是1280x720仍居中。我搜索了所有代码,只将宽度和高度分配给了最终的静态int变量,然后将它们用于投影矩阵和填充物。我尝试了800x600、1000x600、1700x1000,一切都很好。

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

这是显示代码:

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,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;

感谢您的帮助。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...