请查看我发现的这段简洁代码:
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只是以某种方式绘制这些形状[FILLED] ...(ccp表示分别具有给定x,y坐标的点)。
我的问题....是的,你猜对了,这条线与圆圈重叠,两者都是半透明的(半透明的)。所以,最终的形状就在那里,但是重叠部分变得更暗,整体形状看起来很难看。即如果我用255 alpha画画,我会没事的。
有没有办法告诉OpenGL渲染重叠部分中的一个形状?
(形状显然是一个带圆角的矩形..半圆..)
答案 0 :(得分:2)
您可以打开GL_DEPTH_TEST并首先渲染线条,然后再靠近相机。然后,当您渲染下面的圆圈时,不会触及该线条的碎片。 (您也可以使用模板缓冲区来实现这样的效果。)
请注意,这可能看起来仍然很难看。如果您想使用消除锯齿,您应该非常认真地考虑应用哪种混合模式以及渲染基元的顺序。