2012-08-31 69 views
0

我正在使用glutSolidSphere渲染很多領域。有行邊界處,這是不正確的顏色呈現:球體邊緣的文物 - 錯誤的照明?

lines at the boundary

如果我沒有記錯,我沒有這個問題,AMD顯卡,它是NVIDIA的一個新問題。

相關OpenGL設置(不知道我得到了所有的人,他們是通過代碼散)分別是:

// set 2 lights, both having specular, ambient and diffuse components. 
// and then: 
glDisable(GL_CULL_FACE); 
glLightModeli(GL_LIGHT_MODEL_LOCAL_VIEWER,1); 
glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,1); 
glColorMaterial(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE); 
glEnable(GL_COLOR_MATERIAL); 
glEnable(GL_BLEND); 
glEnable(GL_LINE_SMOOTH); 
glEnable(GL_POLYGON_SMOOTH); 
glShadeModel(GL_SMOOTH); 
glEnable(GL_RESCALE_NORMAL); 

回答

1

你仍然可以得到,如果你關閉GL_LINE_SMOOTH和GL_POLYGON_SMOOTH的問題?

什麼是混合模式?你是從最遠距離最近的球體上畫出正確的混合(不是說你可以保證球體上的三角形將按正確的順序渲染)。

我建議開溝多邊形平滑,如果這是問題和使用FSAA。

+0

當GL_POLYGON_SMOOTH關閉時很好,謝謝。我沒有設置任何混合模式,這是一個問題嗎?渲染之前,球體並未排序。什麼是FSAA? (對不起,我在OpenGL中不太流利) – eudoxos

+0

混合模式: glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); FSAA是全場反鋸齒。您可以設置opengl以使用處理抗鋸齒的多采樣緩衝區。這避免了消除鋸齒邊緣的順序依賴混合的問題。 – Pete

+0

http://www.opengl.org/wiki/Multisampling – Pete