Графические эффекты, Довольно глупая тема :D |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
Графические эффекты, Довольно глупая тема :D |
XaMMaX |
Сообщение
#1
|
Пионер Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: 0 |
подскажите какие-нибудь интересные графические 2д эффекты, фокусы с расстановкой пикселей или цветами, учитываю что не должна использоваться какая-либо видео акселерация видео картой(я имею ввиде без опенгл или дирестикс). Надеюсь вы меня поняли и что-нибудь подскажите :D
|
andriano |
Сообщение
#2
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Можно, конечно, получить данные непосредственно экрана. Но это долго. Долго это было под DOS, т.к. видеопамять намного тормознее по операции чтения, чем по операции записи. Еще дольше это под Windows.
В то же время хорошо себя зарекомендовал следующий алгоритм: 1. готовим в оперативной памяти буфер в формате BMP-файла, причем, с удобной нам глубиной цвета. 2. в обработчике сообщения WM_PAINT процедурой StretchDIBits переливаем содержимое буфера на экран. Примечания: к п.1: обычно я использую 256-цветный режим, т.к. для операций в труколоре обычно больше подходит OpenGL. Но это мое личное мнение. Опять же, сущесвуют исключения, например, то, что я привел вл втором посте темы. к п.2: мне кажется, что если размеры буферов совпадают (т.е. не требуется масштабирования), то операцию преобразования цвета (например от палитры 256 цветов в труколор) берет на себя железо видюшки прозрачно для программы. По крайней мере, судя по скорости этого преобразования. Что же касается примера, то чем не подходит, опять же, архив из второго поста? Там я как раз реализовал описанную технику. PS. Да, язык Ассемблера здесь в подавляющем большинстве случаев совсем необязателен. В приведенном римере, например, на нем написано всего несколько строк, и то лишь для того, чтобы использовать MMX для ускорения одного конкретного алгоритма. Сообщение отредактировано: andriano - |
Текстовая версия | 4.05.2024 1:27 |