альфа + RGB-> ARGB?

Я только что провел 30 минут с этим. Я переименовал объект entity, переименовал запись в файле конфигурации, но есть еще кое-что ... вы также должны изменить ссылку на csdl

, которую очень легко пропустить - если вы переименовываете, убедитесь, что вы получите все ....

6
задан jedierikb 19 July 2009 в 14:41
поделиться

4 ответа

var argb: int = (альфа << 24) | rgb;
var rgb: int = 0xFFFFFF & argb;
var alpha: int = (argb >> 24) & 0xFF;

23
ответ дан 8 December 2019 в 04:54
поделиться

A, R, G, B - распространенный формат, используемый видеокартами для обеспечения «смешивания текстур» и прозрачности текстуры. Большинство систем используют только 8 бит для R, G и B, так что еще 8 бит остаются свободными из 32-битного размера слова, который является обычным для ПК.

The mapping is:

For Bits:
33222222 22221111 11111100 00000000
10987654 32109876 54321098 76543210

AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
00000000 RRRRRRRR GGGGGGGG BBBBBBBB

Примерно так:

private function toARGB(rgb:uint, newAlpha:uint):uint{
  var argb:uint = 0;
  argb = (rgb);
  argb += (newAlpha<<24);
  return argb;
}

private function toRGB(argb:uint):uint{
  var rgb:uint = 0;
  argb = (argb & 0xFFFFFF);
  return rgb;
}
3
ответ дан 8 December 2019 в 04:54
поделиться

Если альфа может быть представлена ​​8 битами, это возможно. Просто сопоставьте каждую область своего 32-битного значения ARGB с соответствующей переменной, например

0x0ABCDEF1

alpha - 0x0A

красный - 0xBC

зеленый - 0xDE

синий - 0xF1

0
ответ дан 8 December 2019 в 04:54
поделиться

Я не могу ничего добавить к превосходным ответам выше, но, проще говоря, альфа-значения являются последними две цифры в uint, например

//white
var white:uint = 0xFFFFFF;

//transparent white
var transparent:uint = 0xFFFFFFFF;

Масштаб как обычно, 00 = 1 FF = 0.

Надеюсь, это поможет

-2
ответ дан 8 December 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: