iOS / GLES2: как добиться эффекта свечения - PullRequest
1 голос
/ 26 апреля 2011

У меня есть стрелка компаса, свободно вращающаяся.

Мне нужно, чтобы она светилась, когда приближается к определенной ориентации, скажем, 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 ]

1 голос
/ 26 апреля 2011

Если вы используете drawRect для рисования своей иглы, вы можете сделать что-то вроде этого:

Есть ли простой способ или библиотека, позволяющая тексту светиться?

0 голосов
/ 13 июля 2011

Я экспериментировал со многими подходами здесь.

В основном мне нужно два изображения;один светящийся, а другой нет.

тогда я могу рисовать их как CALayers друг над другом и угонять CADisplayLink, устанавливая

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

Я также играл с игрой в шейдерах GL, проходя мимокоэффициент свечения как единое целое, но это тонна кода, чтобы сделать в основном то же самое.

0 голосов
/ 26 апреля 2011

Вы можете создать свечение вокруг изображения иглы в Photoshop. Просто замените изображение в приложении во время выполнения при включении свечения.

...