2012-11-30 44 views
0

我在OpenGL(current)中編寫了一個Starmap,但由於星星的距離是天文距離,所以它們會將near/far設置變得太大。這些旨在成爲真正的恆星的準確可視化。我試圖在經過投影矩陣後重新調整頂點着色器中點的z值,但由於透視分割,我仍然讓它們移動。是否有辦法重新調整Z以適應較小的近/遠範圍,而不必在透視圖中進行x/Y變化?我能用W座標來做些什麼嗎?請注意,星星只是一組點。在opengl中重繪z座標

+0

不是一個直接的答案,但你可能想讀這個:http://outerra.blogspot.fr/2012/11/maximizing-depth-buffer-range-and.html – Calvin1602

回答

1

完全有可能在無窮遠處有遠平面。 GLM庫提供了一個函數infinitePerspective爲這些用途創建適當的投影矩陣。谷歌搜索「投影矩陣無限」產生了很多關於這個話題的文章。

+0

問題是,我在看地球和衛星,並且希望具有正常的視角(例如30-45度FOV),並且具有10萬公里的遠距離。我可以同時做兩個,或者我需要使用2個不同的投影矩陣(1個用於恆星,1個用於其他所有投影矩陣) –

+1

@DanHewett:你可以在一個單一的投影矩陣中做兩個投影矩陣,一個有限的近距離和一個無限遠的距離平面。這如何工作?設想(或實際繪製)函數f(x)= 1/x'。設想近平面被映射,使得x(near)= 1'和'x(far→+∞)→+∞'。正如您可以看到'[near,+∞['得到的深度緩衝區值在'] 0,1]'範圍內的整個值範圍,這正是您想要的。 – datenwolf