|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Май 18, 2004 14:55:42 У меня в программе есть процедура смещивания цветов "BlendPixels" Процедура ниже... Смещивает два цвета с1 ф формате A4-R4-G4-B4 Смещивает два цвета с2 ф формате R5-G6-B5 Делаю по формуле c=(c1*k+c2(1-k)) В общем она самый большой тормоз в программе. Может кто поможет ее улучшить. Результаты тестирования проц. среднне за 64краз в di,si(что попало): Athlon 2500+ XP Barton WIN98 51-54 такта DD_BlendPixels proc ;di-Цвет1 (5-6-5)RGB с2 ;si-Цвет2 (4-4-4-4)ARGB с1 push ecx xor ecx,ecx mov dx,si shr dx,12 ;dl=k;dh=1-k cmovz ax,di jz DD_BlendPixels_Exit1 mov dh,15 sub dh,dl jnz short @F mov ax,si and al,00001111b shl al,1 or cl,al mov ax,si and ax,0000000011110000b shl ax,3 or cx,ax mov ax,si and ah,00001111b shl ah,4 or ch,ah jmp short DD_BlendPixels_Exit @@: ;1-Цвет mov ax,si mov bx,di and al,00001111b and bl,00011111b shl al,1 mul dl ;al-c1*k shr ax,4 mov bh,al mov al,bl mul dh ;al-c2*(1-k) shr ax,4 add al,bh or cl,al ;2-Цвет mov ax,si mov bx,di and al,11110000b and bx,0000011111100000b shr al,2 shr bx,5 mul dl ;al-c1*k shr ax,4 mov bh,al mov al,bl mul dh ;al-c2*(1-k) shr ax,4 add al,bh shl ax,5 or cx,ax ;3-Цвет mov ax,si mov bx,di and ah,00001111b and bh,11111000b shr ax,7 shr bx,11 mul dl ;al-c1*k shr ax,4 mov bh,al mov al,bl mul dh ;al-c2*(1-k) shr ax,4 add al,bh shl ax,11 or cx,ax DD_BlendPixels_Exit: mov ax,cx DD_BlendPixels_Exit1: pop ecx ret DD_BlendPixels endp |
|
|
Дата: Май 19, 2004 01:59:00 · Поправил: Black_mirror Evg666 Извлекаем из с1 в 32x-разрядный регистр A4(в самые младшие биты, остальные биты обнуляем), а c1 и с2 переводим в формат Z6-G4-Z6-R4-Z7-B4-Z1 и Z6-G6-Z4-R5-Z6-B5 соответственно(Zx - нули). Домножаем регистр содержащий с1 на A4, а регистр содержащий с2 на A4 xor 15, и складываем. Получаем цвет в формате U2-G10-R9-U2-B9. Осталось только сдвинуть его на 4 вправо и поставить зеленую компоненту на место. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.047 |