Формат цвета

4,167
68
693
Всем привет! Вопрос следующий.
С версии 1.10 в падающих блоках появился такой вот метод:
Код:
@SideOnly(Side.CLIENT)
 public int func_189876_x(IBlockState state) {
 return -8356741;
 }

Отвечает за цвет частиц, летящих вниз от блока, сгенерировавшегося висящем в воздухе.
Только вот что это за формат цвета такой, ума не приложу.
Кто-нибудь может подсказать? Или, хотя бы, указать место, откуда этот метод вызывается (скорее всего, это рендер частиц). Там сам попробую разобраться.
Спасибо )
 
Liahim написал(а):
Всем привет! Вопрос следующий.
С версии 1.10 в падающих блоках появился такой вот метод:
Код:
@SideOnly(Side.CLIENT)
 public int func_189876_x(IBlockState state) {
 return -8356741;
 }

Отвечает за цвет частиц, летящих вниз от блока, сгенерировавшегося висящем в воздухе.
Только вот что это за формат цвета такой, ума не приложу.
Кто-нибудь может подсказать? Или, хотя бы, указать место, откуда этот метод вызывается (скорее всего, это рендер частиц). Там сам попробую разобраться.
Спасибо )
Код:
public static int getSRGB(int r, int g, int b)
 {
 return ((r << 16) | (g << 8) | b << 0);
 }
 
RGB с альфом каналом.
-8356741 - FF807C7B
8356741 - 7F8385


Хотя возможно место этот альфа канал, для другого значения используется. Для какого я не знаю.
 
Из десятеричной в шестеричную.




В калькуляторе сменить "Вид" -> "Программист Alt + 3".
 
Потому-что там альфа FF во всех вариантах, по этому в минус и не уходит.


Код:
int h = (int)alpha << 24 | (int)red << 16 | (int)green << 8 | (int)blue;
 
Это называется дополнительный код. Способ представления чисел со знаком в вычислительной технике.
При таком способе число отрицательное, когда старший бит (для int это 31-ый) равен 1.
 
Знатоки бита подскажите!
Есть ли способ быстро и не затратно смещать два цвета в формате UNIT, без добычи каждого из цветовых каналов?
Смешивать нужно с конкретных процентным соотношением...

P.S. Просто мне показалось, что добывать каждый канал, затем каждый смешивать и потом запихивать обратно в UNIT несколько расточительно...

Спасибо )
 
Никак, очевидно. Ничего оптимальнее разложения числа на каналы, отдельного их смешивания, и упаковки обратно нет. Два инта сами по себе без понятия о том, что в них находится и как это "смешивать".

зы. у тебя что-то совсем не так, если ты занимаешься оптимизацией таких вещей.
 
Тот код, что выполняется часто - его оптимизимуй, логично же
 
Oldestkon написал(а):
Никак, очевидно. Ничего оптимальнее разложения числа на каналы, отдельного их смешивания, и упаковки обратно нет. Два инта сами по себе без понятия о том, что в них находится и как это "смешивать".

зы. у тебя что-то совсем не так, если ты занимаешься оптимизацией таких вещей.

Фига се, я тебя увидел...
 
Назад
Сверху