2011-03-25 79 views
1

請看看這個: http://imgur.com/a/S8eOC線條不正確在OpenGL與霧?

問題:

繪製網格完全正常的,不模糊。霧啓用時,垂直線消失。然後,我向左旋轉一點,所有線條開始變得不可見;如果我旋轉了更多,他們會完全消失。這看起來取決於視角。我認爲這可能是一個照明問題,但我把它關掉,結果是一樣的。

我也嘗試過不同的霧類型,但結果是一樣的。如果我直下(與網格平面成90º角),我可以清楚地看到所有的網格線。

什麼是這種行爲的小狗?它可以修復嗎?

的代碼是非常基本的,但在這裏它是在情況下,它是很重要的:

的main():

glEnable(GL_FOG); 
glHint(GL_FOG_HINT, GL_NICEST); 

renderScene():

float fogColor[3] = {0.8f, 0.8f, 0.8f}; 
glFogfv(GL_FOG_COLOR, fogColor); 
glFogi(GL_FOG_MODE, GL_EXP2); 
glFogf(GL_FOG_DENSITY, 0.01f); 

回答

3

不知道更多有關方式這些線條被繪製出來,我將假定您正在爲網格上的每條水平線和垂直線繪製一條線。 霧方程在頂點只有進行評估,因此,如果您只有頂點是在線路的兩端極,你會用特殊的文物,如您所看到的那些告終。

來解決這方面的主要方式是引入更多的頂點;爲每個交叉點構建一個頂點,並將每個頂點連接起來以形成網格。這將導致更多的線條和頂點,但您會得到正確的行爲。

我將進入更詳細,說明您混淆的概念,這是你最有可能看到的。

記住,在頂點(例如頂點顏色,法線,紋理座標)來評價任何值,將線性內插,以覆蓋它們之間的三角形/線。想象一下,我們希望屏幕中心的像素變亮,邊緣像素變暗。 (嚴格的理論情況,但對解釋有用)。假設我們從一條邊,中間到另一條邊繪製一條線。假設我們只有2個頂點,每個邊都有一個頂點。然後我們計算這兩個頂點的亮度都是黑暗的。然後,爲了繪製線條,OpenGL在黑暗和黑暗之間插值以確定線條的顏色。該線路無法知道該線路需要在該中心亮起。

所以,如果你在中心添加一個頂點,它現在計算,該中心是光明的。您添加的頂點越多,亮度變得越精確。

祝你好運,玩得開心。 :)