непрозрачность ccDrawLine? - PullRequest
       8

непрозрачность ccDrawLine?

2 голосов
/ 13 февраля 2012

Я очень новичок во всех этих вызовах OpenGL, но, к счастью, cocos2d легко позволит мне рисовать линии на экране, например:

-(void)draw {
    glColor4f(255, 255, 255,255);
    ccDrawLine(ccp(150,110), ccp(280,230));
}

И я получаю белую линию.

Но теперь я хочу сделать его немного прозрачным, поэтому я изменяю значение альфа на 100. Однако линия все еще яркая и белая. Тогда я предположил, что значения могут на самом деле колебаться от 0,0 до 1,0. Я установил его на 0,2, но все еще без изменений.

Почему это?

Ответы [ 2 ]

4 голосов
/ 13 февраля 2012

Вам обязательно нужно сначала включить смешивание:

glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glColor4ub(255, 255, 255,100);
ccDrawLine(ccp(0,110), ccp(280,230));

Также обратите внимание, что "glColor4ub" принимает байты без знака (0-255 для каждого параметра), в то время как "glColor4f" принимает 4 числа с плавающей запятой (0-1,0для каждого параметра).Используйте то, что вам удобно.

Удачи!

1 голос
/ 13 февраля 2012

Я не эксперт в Cocos2d, но сам OpenGL требует, чтобы альфа-смешивание было включено.Это glEnable(GL_BLEND), которое отключено по умолчанию.Кроме того, вам следует проверить функцию glBlendFunc () , чтобы установить правильную функцию смешивания.Обычные параметры для альфа-смешивания: glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

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