我正在尝试使用Cocos2d在OpenGL ES中绘制半透明图元(线条,圆形),但无法避免可见的重叠区域。有谁知道如何解决这个问题?
答案 0 :(得分:5)
这是一个经常遇到的问题,即使在3D中也是如此。
我对Cocos2D不太熟悉,但在通用OpenGL中解决这个问题的一种方法是用你想要的alpha通道填充帧缓冲区,将混合模式切换到glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA)
并绘制矩形。这背后的想法是你绘制一个具有所需透明度的矩形,该矩形取自帧缓冲区,但是在进度掩码中你绘制的区域,以便随后的矩形将被遮盖。
另一种方法是将整个事物渲染到纹理或使用不重叠的多边形组合形状。
我不确定Cocos2D是否支持其中任何一种......
答案 1 :(得分:2)
我不知道Cocos2D具体提供了哪些功能,但我可以看到两个选项,
一,不要像那样重叠,而是构造更复杂的几何体,使每个像素只被覆盖一次,
二,使用模板缓冲区在绘制时创建一个蒙版,并拒绝任何已经蒙版的像素。