|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.05.2008, 13:12 | #1 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Нужна оптимизация дельфинского кода
Химичу с альфа-прозрачностью. Встроенных механизмов работы с PNG в винде увы нет, приходится доставать альфа-канал из png и пихать в 32-битный BMP. Из-за Round и операций с вещественными числами работает не так быстро, как хотелось бы
Код:
пыщь
Последний раз редактировалось JTG; 29.05.2008 в 13:17. |
29.05.2008, 13:18 | #2 | ||
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
Цитата:
Цитата:
|
||
29.05.2008, 14:01 | #3 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
2JTG
1. делить на 256 Row[j].rgbBlue := Row[j].rgbBlue * Row[j].rgbReserved shr 8; 2. если возможно, перейти на pf24Bit - недавно оптимизировали - пост#509 http://programmersforum.ru/showthread.php?t=338&page=51 |
29.05.2008, 14:17 | #4 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
2B_N
Мне StretchDIBits кажись не нужно Там дальше идёт вот это Код:
Если имеется ввиду напрямую скопировать PNG в hSrcDC - не выйдет, в StretchDIBits содержимое передаётся через параметр lpBitsInfo:TBitmapInfo, в котором и находится тот же "An array of RGBQUAD". Вообщем нужно оптимизировать именно сам процесс заполнения массива 2alexBlack pf24Bit не подходит, т.к. пропадёт альфа-канал
пыщь
Последний раз редактировалось JTG; 29.05.2008 в 14:21. |
29.05.2008, 14:26 | #5 |
Новичок
Джуниор
Регистрация: 18.01.2008
Сообщений: 1,720
|
2 JTG
Ну а просто сопроцессором Вы не пробовали ещё? Быстрее, наверное, уже ничего не придумать (только видеоадаптер, почему я и упоминаю про виндышную поддержку PNG, как таковую, не обязательно именно StretchDIBits). Может быть ещё попробовать через MMX, как руки дойдут, поэкспериментирую.... |
29.05.2008, 14:28 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
JTG смотри что я предложу:
Код:
a := Round(b * c / 255); Счет явно быстрее будет.
I'm learning to live...
|
29.05.2008, 14:53 | #7 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
Упс) Вот это я перемудрил Там вроде всё работает и с целочисленным делением. В MSDN написали Dst.Red = Src.Red * (SCA/255.0), вот я слеш автоматом и поставил
-- Вот, если кто пользуется AIMP - ждите в скором времени плагин. Пытаюсь переписать FLDance из FLStudio 8
пыщь
Последний раз редактировалось JTG; 29.05.2008 в 15:04. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оптимизация кода | [Smarik] | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 9 | 20.08.2008 15:00 |
Оптимизация кода. | MAKTECYMA | Общие вопросы C/C++ | 2 | 05.06.2008 16:48 |
Оптимизация кода программы | insi | Фриланс | 2 | 17.05.2008 18:30 |
Нужна помощь в написании кода | Михаил Юрьевич | Общие вопросы Delphi | 2 | 27.12.2007 09:32 |