我正在使用 cocos2d-x 2.0.4。我通过这两张图片说明了我正在尝试做的事情。
我想要做的是以编程方式创建一个模糊的边界或一个带有渐变的边界。我有两个想法可以做到这一点,但我不确定这是否是正确的做法。第一个解决方案是对仅包含模糊颜色的多边形(在这种情况下为带有孔的凹多边形)进行三角剖分,并使用渐变在其上渲染颜色,多边形外部的顶点将是全 alpha,内部的顶点为零-α。插值将完成梯度的工作。第二种解决方案是在着色器本身内部进行。我需要的只是计算一个像素和多边形最近边缘到它的距离。然后在某个阈值下,我会根据该距离影响具有某个 alpha 值的像素白色(距离最短,alpha 最大)。
无论如何,我对openGL的东西很陌生,我担心第二种解决方案最终会花费大量的处理时间,因为我必须计算多边形每个像素的距离。你怎么看这些家伙?有什么想法可以证实我的猜测,还是我完全错了?
编辑:我最终选择的解决方案是使用多边形中每个角度的平分线(易于用 3 个连续顶点计算),并在该平分线上取一个点,该点将成为内部多边形的顶点。然后我采用外部多边形顶点或内部多边形顶点来构建可以适合 GL_TRIANGLE_STRIP 参数的顶点数组。我把图片放在下面以便更好地理解。