我正在使用cocos2d-x 2.0.4。我通过这两个图像来说明我正在尝试做什么。OpenGL - 在纹理多边形上创建边框
convex_poly http://img542.imageshack.us/img542/2554/convexpoly.png convex_poly_with_border http://img40.imageshack.us/img40/8007/convexpolywithborder.png
我想要做的就是它产生模糊的边界或边框有梯度编程。我有两个想法来做到这一点,但我不确定这是否是正确的做法。第一种解决方案是对仅包含模糊颜色的多边形进行三角测量(在这种情况下为带有孔的凹多边形)并在其上使用渐变渲染颜色,多边形外侧的顶点将为全顶点并且在内零点上-α。插值可以完成渐变的工作。 第二种解决方案是在着色器内部完成它。我需要的只是计算一个像素与多边形最近边缘之间的距离。然后,在一定的阈值下,我会根据距离(最短的距离,最大的alpha值)来影响具有某个alpha值的像素白色。
无论如何,我对openGL的东西很陌生,恐怕第二种解决方案最终会有很大的处理时间,因为我必须计算多边形每个像素的距离。你对这个家伙有什么看法?任何想法都倾向于证实我的猜测,或者我完全错了吗?
编辑: 我最终选择的解决方案是使用多边形中每个角度(易于计算3个连续顶点)的平分线,并在该平分线上取一个点,该点将成为内部多边形的顶点。然后我使用外部多边形顶点或内部多边形顶点来构建一个可以适合GL_TRIANGLE_STRIP参数的顶点数组。我把下面的图片理解得更好。
expl http://img571.imageshack.us/img571/892/convexpolyexplanation.png
只是一般的评论,但你需要考虑在三角形的方面,而不是任意多边形。 – JasonD 2013-02-26 15:15:15