Инвертировать цвет текста, используя glBlendFunc в Cocos2d на CCLabelTTF - PullRequest
1 голос
/ 13 декабря 2011

Я пытаюсь добавить CCLabelTTF в мой проект Cocos2d, и текст должен быть перевернутой версией графики позади него.

Мне трудно понять, какой фонд смешивания использовать. Я должен признать, что я не совсем понимаю концепции, стоящие за этим, поэтому я в основном просто пробую разные режимы.

Я пробовал несколько типов:

Это инвертирует фон текста, но оставляет текст белым:

[fontLabel setBlendFunc:(ccBlendFunc){GL_ONE_MINUS_DST_COLOR, GL_SRC_ALPHA}];

Можете ли вы помочь мне в правильном направлении? Я хочу, чтобы текст был перевернут, а фон был невидимым.

Ответы [ 2 ]

4 голосов
/ 13 декабря 2011

Вы можете визуально поэкспериментировать с различными методами blendfunc с точно названным Visual glBlendFunc tool .

Вам также следует помнить, что CCLabelTTF использует 8-битные (альфа-маску, kCCTexture2DPixelFormat_A8) текстурына устройствах 1-го и 2-го поколения и 16-битных (альфа + маска интенсивности, kCCTexture2DPixelFormat_AI88) текстур на устройствах 3-го поколения и более новых.Это может повлиять или не повлиять на результаты режима наложения, или даже сделать невозможным, потому что текстуры не содержат информацию о цвете, только альфа.

0 голосов
/ 31 мая 2013

Это нельзя сделать с помощью glBlendFunc. Уравнение смешивания выглядит так:

result = A * front_color  OP  B * back_color;

OpenGL позволяет настроить A, B - glBlendFunc(A, B);

и ОП (работа) - glBlendEquation(OP);

Чтобы инвертировать цвета, вам нужно

result = 1 - back_color;

Вы можете сделать это, установив A = 1, B = 1, OP = FUNC_SUBTRACT, но вам придется установить front_color на (1,1,1,1) во фрагментном шейдере.

P.S. Я могу ошибаться, поэтому напишите комментарий ниже, и я изменю свой ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...