OSDev
http://osdev.ru/

Alpha смешивание
http://osdev.ru/viewtopic.php?f=6&t=2463
Страница 1 из 1

Автор:  grenders22 [ 06 июл 2018, 22:05 ]
Заголовок сообщения:  Alpha смешивание

На просторах интернета нашел код ниже для смешивания цветов. При ff видимость нулевая, при 00 стопроцентная видимость. Не могу понять почему так выходит.
Код:
uint32_t MMXBlend(uint32_t source, uint32_t overlap){
   asm volatile(
      "movd %%edx,%%mm0;"::"d"(source));
   asm volatile(
       "movd %%edx,%%mm1;"::"d"(overlap));
   asm volatile(
       "pxor %mm2, %mm2;"
       "punpcklbw %mm2,%mm0;"
       "punpcklbw %mm2,%mm1;"
       "movq %mm1, %mm3;"
       "punpckhwd %mm3,%mm3;"
       "punpckhdq %mm3,%mm3;"
       "mov $0xFF00FF, %edx;"
       "movd %edx, %mm2;"
       "punpckldq %mm2,%mm2;"
      "psubw %mm3,%mm2;"
      "pmullw %mm3,%mm0;"
      "pmullw %mm2,%mm1;"
      "psrlw $8,%mm0;"
      "psrlw $8,%mm1;"
      "paddw %mm1,%mm0;"
      "packuswb %mm0,%mm0;"
   );
   asm volatile(
       "movd %%mm0,%%edx":"=d"(source));
   return source;
}

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/