iPhone Cocos2D - конвертирование поплавка в GLubyte - PullRequest
0 голосов
/ 12 ноября 2011

У меня есть UISlider, который дает мне значения с плавающей точкой от 0 до 255, и мне нужно установить непрозрачность Cocos2D, которая находится в Glubyte.

Как мне преобразовать число с плавающей точкой в ​​GLubyte ??????

спасибо

Ответы [ 3 ]

3 голосов
/ 12 ноября 2011

A GLubyte просто определяется как:

typedef unsigned char  GLubyte;

Итак, преобразование на самом деле не проблема (посмотрите на этот пост , который предлагает несколько возможных подходов за "базовыми" (int)(x+0.5)), за исключением значений "вне диапазона" (поскольку беззнаковый символ может представлять десятичное число от 0 до 255). Короче говоря, вы должны решить, что делать со значениями с плавающей запятой, которые не могут быть представлены как целые числа без знака.

Поскольку вы говорите, что ваш ползунок дает значения от 0 до 255, у вас не должно возникнуть никаких проблем.

1 голос
/ 12 ноября 2011

Если ваш ползунок уже настроен на диапазон 0-255, то вам не нужно масштабировать значение, вам просто нужно преобразовать тип.Примерно так должно работать:

GLubyte component = (GLubyte)lroundf(slider.value);
1 голос
/ 12 ноября 2011
static_cast<GLubyte>(floatNumber * 255.f); 

Я не заметил, что диапазон UISlider уже находится в диапазоне 0-255 .. поэтому уберите ответ, кратный приведенному выше.

static_cast<GLubyte>(floatNumber); 
...