2011-08-07 60 views

回答

5

這是你平時遇到相當頻繁,即使在3D的一個問題。

我對Cocos2D不太熟悉,但在通用OpenGL中解決此問題的一種方法是用所需的Alpha通道填充幀緩衝區,將混合模式切換爲glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA)並繪製矩形。這個背後的想法是,你從畫框緩衝區中畫出一個具有所需透明度的矩形,但在進程中掩蓋你畫的區域,以便你後面的矩形在那裏被遮住。

另一種方法是將整個東西渲染爲紋理或使用不重疊的多邊形組裝形狀。

我不知道的Cocos2D是否支持任何這些...

+0

是的。 Fyi可以使用blendfunc屬性更改精靈的混合函數。即'mysprite.blendFunc =(ccBlendFunc){GL_ONE_MINUS_DST_ALPHA,GL_DST_ALPHA};' –

2

我不知道什麼樣的能力cocos2d的具體規定,但我可以看到兩個選項,

一個,不喜歡重疊的,但而是構建更復雜的幾何圖形,以便每個像素只覆蓋一次,

二,使用模板緩衝區在繪製時創建一個遮罩,並拒絕任何已經被遮罩的像素。