Учитываете ли вы соотношение сторон при настройке матрицы проекции?
Этот урок может быть полезен для чтения, если нет.
Вот моя собственная версия (на 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')