2011-07-31 60 views
0

部分透明的形状请检查此整齐一段代码,我发现:重叠在OpenGL

glEnable(GL_LINE_SMOOTH); 

glColor4ub(0, 0, 0, 150); 
mmDrawCircle(ccp(100, 100), 20, 0, 50, NO); 

glLineWidth(40); 
ccDrawLine(ccp(100, 100), ccp(100 + 100, 100)); 

mmDrawCircle(ccp(100+100, 100), 20, 0, 50, NO); 

其中mmDrawCircle和ccDrawLine只是绘制这些形状[填充]不知何故...(CCP是指用给定的x的点,y坐标)。

我的问题....是的,你猜对了,这条线与圆圈重叠,都是半透明的(半透明的)。所以,最终的形状是在那里,但重叠的部分变得更暗,整体形状看起来很丑。即,如果我用255 alpha绘图,我会好起来的。

有没有办法告诉OpenGL渲染重叠部分中的形状之一?

(形状显然是与圆滑的边缘..半圆矩形..)

回答

2

你可以打开GL_DEPTH_TEST和第一渲染线和靠近照相机一点点。当你渲染下面的圆圈时,线条的碎片将不会被触摸。 (您也可以使用模板缓冲区来达到这样的效果)。

请注意,这可能仍然看起来很丑。如果您想使用抗锯齿功能,您应该非常努力地考虑应用哪种混合模式以及渲染基元的顺序。