iOS / GLES2:如何实现发光效果

时间:2011-04-26 05:26:25

标签: opengl-es blur

我有一个罗盘式针,可以自由旋转。

当它接近某个方向时,我需要它发光,比如55度。

我想拥有NeedleView子类UIView,所以我可以操纵(NeedleView *)needleView,就好像它是一个UIView,只是有几个额外的方法 - (void)feedAngle :( float)theta; - (void)feedGlow:(float)glow_01;

做了一些研究,我发现常见的技术是采用针的图像的灰度副本,模糊它,将其保存为GL纹理,然后将其包裹在实际针的后面的四边形上四

然后我有点毛茸茸......

我想我将角点上的RGBA设置为我想要的发光颜色的(r,g,b),a = glowFactorForThisFrame

然后我将glBlendmode设置为适当的

然后我为模糊绘制纹理四边形

我想要的是原始针头上Alpha到处都是1的东西,但随着我们向远处移动,它会逐渐渗透以完全透明

...

首先,我想找到一些能够模糊灰度位图的代码,我宁愿通过代码而不是照片商店来做这件事。 (我意识到这会在实际设备上花费大量时间,所以也许我可以在第一次运行应用程序时计算它,将其保存到文件中,然后从文件加载)

其次,我对我必须做的事情的确切细节非常粗略。

有人可以帮助我解决这些问题吗?

3 个答案:

答案 0 :(得分:1)

如果您使用drawRect绘制针,可以执行以下操作:

Is there an easy way or library available to let text glow?

答案 1 :(得分:0)

您可以在Photoshop中创建针图像周围的光晕。只需在启动发光时在运行时替换应用程序中的图像。

答案 2 :(得分:0)

我在这里尝试了很多方法。

基本上我需要两张图片;一个发光,一个不发光。

然后我可以将它们作为CALayers绘制在一起,并劫持CADisplayLink,设置

glowLayer.opacity = glowFac;
dullLayer.opacity = (1 - glowFac);

我也在GL着色器中玩耍,将辉光系数作为制服传递,但这是一大堆基本相同的代码。

注意我需要找到一个图形艺术家来“发光”图像