2011-07-31 99 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和第一渲染線和靠近照相機一點點。當你渲染下面的圓圈時,線條的碎片將不會被觸摸。 (您也可以使用模板緩衝區來達到這樣的效果)。

請注意,這可能仍然看起來很醜。如果您想使用抗鋸齒功能,您應該非常努力地考慮應用哪種混合模式以及渲染基元的順序。