2012-08-31 40 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