我正在尝试使用 Cocos2d 在 OpenGL ES 中绘制半透明图元(直线、圆形),但无法避免可见的重叠区域。有谁知道如何解决这个问题吗?
最佳答案
这是您经常遇到的问题,即使在 3D 环境中也是如此。
我对 Cocos2D 不太熟悉,但在通用 OpenGL 中解决此问题的一种方法是用所需的 Alpha channel 填充帧缓冲区,将混合模式切换为 glBlendFunc(GL_ONE_MINUS_DST_ALPHA, GL_DST_ALPHA)
并绘制矩形。这背后的想法是,您绘制一个具有所需透明度的矩形,该透明度取自帧缓冲区,但在进度中屏蔽您所绘制的区域,以便后续的矩形将被屏蔽在那里。
另一种方法是将整个事物渲染为纹理或使用不重叠的多边形组装形状。
我不确定 Cocos2D 是否支持其中任何一个......
关于iphone - OpenGL,具有不透明度且没有可见重叠的图元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6972338/