Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];

Вниз

Два вопроса   Найти похожие ветки 

 
Terminus   (2003-02-25 01:49) [0]

1. Езвестно ликому, можно ли организовать в DelphiX быструю прорисовку полупрозрачности? Пробовал WinAPI функцию AlphaBlend, но она требует после себя делать Canvas.Release обоих поверхностей, а это сильно замедляет процесс...
2. Этот вопрос еще важней. Известно, что при переходе по Alt-Tab из полноэкранного приложения DelphiX и возврата обратно, на DXDraw прекращается вывод. Знает ли кто-нибудь, как можно с этим бороться?


 
A_n_t   (2003-02-25 09:14) [1]

1. Если хочется реально быстрый альфа бленд, нужно переходить на аппаратную поддержку, то есть Direct3D хотя бы. А так: только делать все "в ручную" - по пикселю. Или же использовать компоненты которые будут делать всю "ручную работу" за тебя.

2. После перехода из полноэкранного режима освобождаются все поверхности, поэтому необходимо переинициализировать все картинки при возвращении обратно.

P.S. Может я чего-то не понимаю в первом вопросе, но какую связь там имеют DelphiX и WinAPI.


 
Terminus   (2003-02-25 11:24) [2]

1. Связи никакой, но DXDraw в своей иерархии содержит (естественно) Canvas, и с помощью WinAPI функции AlphaBlend можно на этот Canvas сравнительно быстро (сравнительно с DrawAlpha все быстро ;) выводить полупрозрачные объекты (Canvas на Canvas). Дело в том, что есть библиотека Pixel... черт... забыл точное название... В общем, там было на ASM реализован блендинг на поверхности в DelphiX. Беда в том, что библиотека старая и возникло множнство конфликтов версий, побороть которые мне не удалось.
Ради одной прозрачности менять платформу на 3D, конечно, глупо, так что попробую обойтись без нее.. если не будет продуктивных советов в рамках DelphiX... :)

2. Какую конкретно ф-цию для поверхностей надо выполнить? Refresh? Release? Restore? Или еще что? Что характерно, в стандартных DelphiX такого не наблюдается... Правда, там вместо TForm задействована TDXForm, но у меня в любом случае проблема остается... :(


 
A_n_t   (2003-02-25 13:26) [3]

1. Если я правильно помню: та самая библиотека называется PixelCore, может какой другой Pixel... , неважно, в принципе они все похожи, так вот, когда было нужно просто выковырял нужную функцию оттуда и вставил себе и никаких конфликтов :)
А 3D дает еще много чего полезного помимо прозрачности ;)

2. В DXDraw1Initialize(Sender: TObject) забить загрузку всех имеджей, а потом просто DXDraw1.Initialize - может тупо, зато работает :)


 
Terminus   (2003-02-26 15:52) [4]

1. Тот "Pixel..." оказался PowerDraw :))) Но старая версия, которая еще, в отличии от новой, работает с DelphiX. ТАк вот старая была слишком старой... Жаль.
3D, конечно, круто, только (извини) вопрос состояит не в том, какую платформу выбрать для воспроизведения прозрачности, а как ее реализовать в рамках DelphiX...
3. Мда... Надеюсь, загрузка всей графики - не единственный выход, т.к. графики в новом проекте будет до черта... Впрочем, баги DelphiX превратились в защиту от читеров... :) Может, с этим я еще смирюсь...

P.S.: PixelCore только что посмотрел, но кроме множества PutPixel/GetPixel/Line никаких функций (тем более для прозрачности) не нашел... Может, знаешь наверняка ту библиотеку, из которой можно AlphaBlend выдернуть?


 
A_n_t   (2003-02-26 17:24) [5]

1. Если будешь хранить картинки а системной памяти, то они никуда не исчезнут после перехода из фулскрина и обратно, а картинки из видео памяти, как я понял удаляются нафик, так что в любом случае придется заново подгружать, да это и не так много, средняя видео карточка содержит 32-64 Mb памяти, и загрузить их заново – дело секунд (конечно если не нужно менять режим с частотой 1 Гц :)
2. Любая операция с картинкой, в любом случае состоит из этих самых: PutPixel и GetPixel, так что можешь сам написать функцию наложения с прозрачностью, используя эти самые …Pixel-и – в принципе ничего сложного пробежаться по всем пикселям картинок, вычислить и нарисовать.
3. Библиотек которые работали бы с прозрачностью в DelphiX что то не припомню.

Вот парочка заметок про реализацию прозрачности:
1. Чтение из видеопамяти – процесс до жути тормозной, сливать же в нее можно до 50-150 Mb с секунду
2. Для реализации прозрачности лучше хранить обрабатываемые картинки в системке, а после завершения – все слить в видео.


P.S. Реализация софтварного альфаблендинга процесс вообще творческий :)



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
14-26659
vidiv
2003-05-24 03:01
2003.06.09
Посоветуйте HTTP Прокси(Кеш), и Почтовый сервер


1-26596
Valeris
2003-05-28 16:25
2003.06.09
Как узнать какие функции экпортирует DLL


14-26759
Jackson
2003-05-22 23:10
2003.06.09
Нужна ли баньщику латынь?


14-26690
Дмитрий К.К.
2003-05-23 06:11
2003.06.09
Именинники 23 мая


1-26549
Valentino
2003-05-28 10:47
2003.06.09
AdjustTokenPrivileges.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский