2012-12-07 137 views
4

我想讓我們的太陽系的C++ OpenGL表現力作爲教自己OpenGL的一種方式,所以請保持簡單的答案。 我遇到的問題是行星距離很遠,所以當從任何給定的行星觀看時,其他所有事物都超出剪輯平面。 如何將C++ OpenGL 3.1平面的裁剪移動到2000000000如果可以的話,我更喜歡一個簡單的代碼片段。 我已經查閱過SO和論壇上的帖子,但是它們要麼太老了,以至於什麼都不適用(使用傳統API或者只是死鏈接),或者如此複雜以至於我無法弄清楚他們在說什麼。提高OpenGL的遠距離剪貼畫距離

+0

可能有用的Gamedev討論。最近看過同樣的問題,但還沒有時間研究它。 http://www.gamedev.net/topic/557264-confused-very-large-environments/ – Grimmy

+0

實時程序性宇宙:http://www.floatingorigin.com/mirror/oneil_01.htm – Grimmy

回答

2

剪切平面由透視投影矩陣定義。

如果使用glFrustum,則將傳遞給它的最後一個參數更改爲2000000000.0。

如果您使用的矩陣排列自己的矩陣,設置10元素:

(2000000000.0+nearClippingPlane)/(nearClippingPlane-2000000000.0)

(公式爲(far+near)/(near-far)

和14日:

(-4000000000.0*nearClippingPlane)/(2000000000.0-nearClippingPlane)

(公式爲(-2.0*near*far)/(far-near)

2000000000是非常大的價值,但是,如果你添加諸如山脈之類的細節,Z-fighting可能會發生。

+0

謝謝!我不知道這是否會奏效,因爲目標項目已不再發展。我認爲你是正確的,直到證明不然,否則:3 – Supuhstar

+1

不,我寫錯了,我寫的第10個元素的公式不正確,我修正了它。 – Triang3l