在OpenGL程序中,我有一个Camera对象,它将投影矩阵设置为以精灵为中心。它工作正常,直到我进入全屏模式,在那里我注意到我关注的对象偏离中心。在弄清楚我的决议之后,我注意到4:3的分辨率没有这个问题(我最初是在1680x1050)然后我发现了以下内容。
1280x1024:物体居中。
1280x960:对象居中。
1280x720:对象未居中,整个视口似乎向左移动。也就是说,当我向左移动鼠标时,它似乎离屏幕几英寸,屏幕右侧有一个黑色区域,没有任何东西被绘制,我的鼠标也不会移动。
有没有人有这样的问题?如果那是重要的话,我会使用Ubuntu。
答案 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连接的,并且未针对该分辨率进行正确校准。因此显示器会移动显示输出。
可能的解决方案包括: