2014-09-24 29 views
1

使用Matrix.frustumM設置OpenGLES繪製距離時,我注意到您不能將近繪製距離設置爲零,並且任何小於1的值都會給出真的很奇怪的失真。將近距離設置爲1可以在大多數情況下正常工作,但是當相機距離物體比距離更近時,它看起來很可怕,因爲它們沒有被繪製(或者其中的一部分沒有繪製)。對此有什麼可以做的嗎? 非常感謝您的時間。Matrix.frustumM導致問題無法將近距離繪製距離設置爲零

回答

2

實際上可以做的不多。近和遠剪切平面將像素剪切更接近near或進一步然後far。除此之外,near有點特殊,因爲它通過組合邊界參數(left,right,updown)來定義您的視野。所以如果你有一個四邊形的座標與那些邊框的座標相同,那麼當全屏幕的時候恰好是near。因此,平面不能爲零或者甚至是負數,因爲例如使用平截頭體將在零個單位處的對象似乎無限縮放。

你仍然可以使用小於1的值,而不會有一些奇怪的工件。你應該做的是看一些關於如何通過設置視場來定義frustum的例子。一般而言,您可以爲其中一個尺寸(如45度寬)定義角度(視野),然後根據需要定義您的nearfar,但兩者都應該是正面的。現在使用三角法計算使用anglenearleftright,並使用updown的相同值,但是按屏幕(視圖)比例縮放。通過這樣做,在更改near參數時,您將不會發生失真。