2012-03-10 91 views
1

我在Android中使用OpenGL ES20創建了一個球體。在透視投影env中,我將球體從[-1.5,-2,-2]設置爲[-1.5,2,-2]。問題是,當球體到達截錐體邊界時,球體看起來像是一個橢圓。實際上,它在[0,0,-2]時看起來只是一個圓形,離開[0,0]越遠,它看起來就像一個橢圓。爲什麼我的OpenGL球體看起來像一個橢圓

這是標準行爲嗎?我認爲,在所有視角中,一個球體應該看起來像一個圓圈。能否請你幫忙 ?

The sphere

回答

1

你應該減少你的視野;你顯示的是正常的,並且是3D投影的稍微人造的性質的副作用 - 三維投影假定觀看者與屏幕坐在固定距離處並且他們的眼睛沿着z直接從屏幕的中心定位正好向前。查看相關問題described here以獲得與真實相機相同效果的說明。

很多時候隱式的默認視野是九十度。但是當你手中握着一部手機時,它佔用的視角遠遠小於九十度。

如果您使用glFrustum,請嘗試爲左,右,上,下指定較小的值。作爲一個快速解決方案,只需在計算投影矩陣後將2.032投影到投影堆棧(或ES2等效投影)上即可。

相關問題