Viewport似乎在全屏幕上稍微偏离屏幕

时间:2011-03-14 08:56:36

标签: java opengl ubuntu fullscreen jogl

在OpenGL程序中,我有一个Camera对象,它将投影矩阵设置为以精灵为中心。它工作正常,直到我进入全屏模式,在那里我注意到我关注的对象偏离中心。在弄清楚我的决议之后,我注意到4:3的分辨率没有这个问题(我最初是在1680x1050)然后我发现了以下内容。

1280x1024:物体居中。
1280x960:对象居中。
1280x720:对象未居中,整个视口似乎向左移动。也就是说,当我向左移动鼠标时,它似乎离屏幕几英寸,屏幕右侧有一个黑色区域,没有任何东西被绘制,我的鼠标也不会移动。

有没有人有这样的问题?如果那是重要的话,我会使用Ubuntu。

2 个答案:

答案 0 :(得分:1)

在设置投影矩阵时,您是否考虑了宽高比?

如果没有,

This tutorial可能是有用的阅读。

如果有代码示例有帮助,这是我自己的版本(在python中,但转换为java应该是微不足道的); initPerspectiveMatrix采用宽高比,即高度/宽度。

def calcFrustumScale(fov):
    return (1.0 / np.tan(np.deg2rad(fov) / 2.0))

def initPerspectiveMatrix(aspectRatio = 1.0):
    scale = calcFrustumScale(60)
    ARscale = scale*aspectRatio
    near = 0.5
    far = 1000.0
    perspMx = np.array([[ARscale,  0.0 ,          0.0         ,            0.0         ],
                       [  0.0  , scale,          0.0         ,            0.0         ],
                       [  0.0  ,  0.0 , (near+far)/(near-far), (2*near*far)/(near-far)],
                       [  0.0  ,  0.0 ,         -1.0         ,            0.0         ]], dtype='float32')

答案 1 :(得分:0)

我的猜测是您的显示器是通过VGA连接的,并且未针对该分辨率进行正确校准。因此显示器会移动显示输出。

可能的解决方案包括:

  • 重新校准您的显示器(自动或手动,可以从显示器控件或操作系统控件,如果可用)
  • 将连接切换为数字连接(例如DVI或HDMI)。