Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как максимально оптимизировать(убыстрить) этот участок кода?


ololo ©   (2012-02-04 17:45:00) 

      trgba = record
                          r,g,b,a:byte;
                   end;

   function q(backcl,forecl):trgba;
var factor:real;

begin
if forecl.a=0 then begin
 result:=backcl; exit;
end;
factor:=trunc(forecl.a/255*100)/100;  // здесь предпологается получить число вида 0,00
result.b:=trunc(backcl.b*(1-factor)+forecl.b*factor);
result.g:=trunc(backcl.g*(1-factor)+forecl.g*factor);
result.r:=trunc(backcl.r*(1-factor)+forecl.r*factor);
   end;


Sapersky   (2012-02-04 19:27:00) [1]

Убрать плавающую точку, убрать вызов функции для каждого пикселя (или инлайн), переписать на ассемблере с MMX.
В Медиа/Играх было довольно много веток про альфа и прочий блендинг.
http://www.delphimaster.ru/cgi-bin/forum.pl?n=7&search=Alpha
http://www.delphimaster.ru/cgi-bin/forum.pl?n=9&search=Alpha


Наверх

Титульная страница Поиск, карта сайта Написать письмо