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

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

КАК быстрее? [D7, WinXP]


parovoZZ ©   (2004-08-01 04:34:00) 

Что быстрее: пряиое копирование битового массива с помощью блокировки памяти (Lock и UnLock) или функция StretchDIBits()?


parovoZZ   (2004-08-02 13:11:00) [1]

Исходник у тебя под free pascal, ну ладно, вечером скачаю.


cyborg   (2004-08-02 12:42:00) [2]


> А зачем вообще гнаться за скоростью загрузки графики, если
> процессы загрузки графики происходят очень редко?

Как буд-то эту тему я создал. Кто тебя знает зачем тебе это надо?


parovoZZ   (2004-08-02 12:27:00) [3]

А как тогда узнать реальный размер картинки?

А зачем вообще гнаться за скоростью загрузки графики, если процессы загрузки графики происходят очень редко?

Ссылки киньте к статейкам, плиз.


wicked   (2004-08-02 11:55:00) [4]


> Что быстрее: пряиое копирование битового массива с помощью
> блокировки памяти (Lock и UnLock) или функция StretchDIBits()?

замерить через RDTSC... а лучше - имхо StretchDIBits, с ней мороки меньше... :)
можно также поискать PTC (официальный хоумпейдж умер вроде как), там есть кучка блиттеров....


> Servelat нашёл в чём причина, оказывается у BMP тоже бывает
> реальная ширина не соответствующая ширине самой картинки,

в msdn всё прекрасно описано....


cyborg   (2004-08-02 08:58:00) [5]

Посмотри для конкурса колортетрис я использовал дописанный модуль к статьям, скачай исходник колортетриса (если тут на форуме не найдёшь у меня на сайте в разделе Исходники смотри) там в модуле GraphRoutines.pas функция с загрузкой 8 битовых картинок от Servelata добавил и ещё пару функций полезных. А сейчас для Танчиков сделал мини2ДЕнгине в виде ДЛЛ, там внутри директинпут и объект(спрайт)енгине встроен, по ходу немного доработаю и выложу в народ.


cyborg   (2004-08-02 08:51:00) [6]

Servelat нашёл в чём причина, оказывается у BMP тоже бывает реальная ширина не соответствующая ширине самой картинки, в этих случаях работает криво, нужно учитывать это, мне лень код исправлять, у меня и так всё работает :).

Вчера на GameDev.ru на форуме увидел интересный пример как с помощью функции виндоуз грузить любые картинки (GIF, JPG, PNG и пр), там на С++ написали, пока не охото разбираться.


parovoZZ   (2004-08-01 22:41:00) [7]

Дело говоришь. Я вот полазил по твоему сайту, отыскал интересную статейку про конвертацию пикселей. Попробовал - функция работает корректно только если картинка не меньше 100*100, а если меньше - получается билиберда. В чём дело пока не разбирался. Но опять - таки почему именно 24 бита? А нельзя файл сразу сохранить как 16 битный в редакторе?


cyborg   (2004-08-01 21:41:00) [8]


> [3] parovoZZ ©   (01.08.04 21:12)

Какая ещё бабка, думаешь StretchDIBits дуновением волшебного электрона всё разом переносит, нет ничего быстрее прямой записи/чтения, другое дело как это организовать.


miek   (2004-08-01 21:22:00) [9]

Процедуры GDI всегда работают в софтварном режиме, а DirectDraw может копировать через DMA.


parovoZZ   (2004-08-01 21:12:00) [10]

Хотя при прямом копировании байты приходится блоками переносить, цикл организовывать. Так что тут бабка на двое сказала.


parovoZZ   (2004-08-01 17:27:00) [11]

Ну, а, в принципе, и хрен с ним, если всего-то 10 картинок надо загрузить. Юзверь нет волк, может и подождать. От компа не убежит))


cyborg   (2004-08-01 08:16:00) [12]

прямое копирование. StretchDIBits с растяжением рисует вроде.


Наверх

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