|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
05.04.2012, 07:42 | #1 |
Форумчанин
Регистрация: 16.10.2008
Сообщений: 205
|
Быстрый вывод графики
Занимаюсь моделированием волновых процессов. Встал вопрос с отображением результата расчетов которые представляют матрицу 1000Х1000 точек. Сделал отображение матрицы выводом точек на битмап размером нужные 1000Х1000 точек, рассчитанные значения отображаются цветом. Сначала сделал просто через Pixels[x,y]:=rgb(a,b,c), затем решил ускорить вывод графики и сделал через DIB как описано тут. Теперь появилась необходимость дополнительно отображать еще один параметр в виде стрелок повернутых на определенный угол, а это дополнительные расчеты на их поворот. К тому же DIB работает тока на XP, на семерке ничего не отображается.
Соответственно вопрос, как сделать максимально быстрый вывод картинки? Использовать OGL, DX, или оставить DIB? |
05.04.2012, 07:52 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я бы OpenGL попробовал.
I'm learning to live...
|
05.04.2012, 10:19 | #3 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Я бы ещё сканлайн попробовал.
Вот примерчик от меня http://programmersforum.ru/showpost....&postcount=628 Делать так - берем генерим буферный битмап размером 1000*1000. Делаем внешний цикл - в нем сканлайн, делаем внутренний цикл - в нем присваивание цвета пикселя согласно данным из Вашего массива в нужный пиксель сканлайненого указателя. Потом битмап просто блитим (BitBlt/Canvas.Draw) в нужное место Если будут сложности, пишите, скиньте либо проект, либо демку, я на ней Вам раскатаю это дело, потом код перекинете себе. По OpenGL могу посоветовать для примера вот такую темку http://programmersforum.ru/showthread.php?t=191857 |
08.04.2012, 09:34 | #4 | |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
2. Быстрая графика не может быть попиксельной. Для скорости нужно пользоваться более крупными примитивами. 3. В Вашей задаче применение DirectX или OpenGL я нахожу нерациональным. 4. В подобных задачах я пользуюсь подходом близким к DIB. Я создаю в ОП образ BMP файла, после чего при помощи StretchDIBits отображаю его на экран. Преимущества два: - я пользуюсь тем способом представления цвета, какой мне удобнее, - я работаю непосредственно с ОП, не делая лишних вызовов системных функций, которые выполняются сравнительно долго. |
|
09.04.2012, 04:15 | #5 |
Форумчанин
Регистрация: 16.10.2008
Сообщений: 205
|
s-andriano, не могли бы Вы привести пример своего подхода?
|
09.04.2012, 05:15 | #6 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,299
|
Может быть вам помогут ассемблерные вставки?
http://www.delphimaster.ru/articles/pixels/ (у меня фрактал рисовался вместо 8-10 минут за 15-30 секунд)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
09.04.2012, 08:52 | #7 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
09.04.2012, 12:49 | #8 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,299
|
Пепел Феникса, вам виднее
Когда я использовал эту статью в прошлый раз, то просто скопировал во внешний модуль, не вдумываясь в содержание (да и знаний не было, чтобы разобраться). Теперь же, увидев тему по быстрой работе с растром, вспомнил и кинул ссылку (мой воспаленный мозг не мог уже в 4 часа трезво анализировать данную статью )
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
10.04.2012, 09:09 | #9 |
Форумчанин
Регистрация: 16.10.2008
Сообщений: 205
|
BDA, спасибо за ссылочку! Сижу разбираюсь что там да как работает.
|
10.04.2012, 20:56 | #10 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
В оконной процедуре:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Visual Basic ... вывод графики | Андрюха_ЕШКО | Помощь студентам | 0 | 22.04.2011 11:48 |
Delphi. Вывод графики на форму. | Волчица | Помощь студентам | 1 | 16.12.2009 22:27 |
быстрый вывод карты на экран или попиксельное создание бмп | angel2c | Общие вопросы C/C++ | 2 | 17.12.2007 10:50 |
таймер и вывод графики | Volkogriz | Мультимедиа в Delphi | 4 | 08.12.2007 12:11 |
Вывод графики в DBGrid | Saro | БД в Delphi | 0 | 20.04.2007 11:39 |