В полноэкранном режиме область просмотра выглядит слегка за кадром - PullRequest
0 голосов
/ 14 марта 2011

В программе OpenGL у меня есть объект Camera, который устанавливает матрицу проекции для центрирования на спрайте.Это работало нормально, пока я не перешел в полноэкранный режим, там я заметил, что объект, на котором я сфокусировался, был вне центра.После возни с моим разрешением я заметил, что разрешения 4: 3 не имеют этой проблемы (я изначально был в 1680x1050), а затем я обнаружил следующее.

1280x1024: объект центрирован.
1280x960:объект центрирован.
1280x720: объект не центрирован, и весь видовой экран, кажется, сместился влево.То есть, когда я двигаю мышь влево, кажется, что она отходит от экрана на несколько дюймов, и справа от моего экрана появляется черная область, где ничто не нарисовано, и моя мышь не будет двигаться.

ИмеетУ кого-нибудь была такая проблема?Я на Ubuntu, если это важно.

Ответы [ 2 ]

1 голос
/ 14 марта 2011

Учитываете ли вы соотношение сторон при настройке матрицы проекции?

Этот урок может быть полезен для чтения, если нет.

Вот моя собственная версия (на 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')
0 голосов
/ 01 июня 2011

Полагаю, ваш монитор подключен через VGA и неправильно откалиброван для этого разрешения. Поэтому монитор смещает вывод изображения.

Возможные решения включают в себя:

  • откалибровать монитор (либо автоматически, либо вручную, с помощью элементов управления монитора или ОС, если доступно)
  • переключите соединение на цифровое (скажем, DVI или HDMI).
...