Быстрый вывод картинок на экран. Как сделать?
оценки:
1024х100fps = 768*1024*3(rgb)*100fps ~ 200МБ/сек.
ни один винчестер не угонится
И скорее всего, придется ботать в сторону DirectX. Но там к частоте особо не увяжешь.
Или если тебе верить, то фильмы на компьютере - почти анриал.
а когда картинки, запихнутые в память кончатся - что делать? Или Ахиллес никогда не догонит черепаху?
со сжатием другая история.
Какого рода картинки надо выводить?
Почему не подходят готовые программы (для слайдшоу, например)?
По крайней мере принципиальной невозможности использовать сжатый формат вместо несжатого я не вижу.
Насколько я понял, автор хочет менять картинки достаточно редко, но саму смену привязывать к к vsync, чтобы полосок не было.
>> И скорее всего, придется ботать в сторону DirectX. Но там к частоте особо не увяжешь.
Наглая ложь (с).
Что в дх, что в гл всинк врубается одной строчкой. Целиком программу будет проще писать на gl+glut, потому что типа не надо долго и муторно инициализить девайс, обрабатывать его потерю, переход в фуллскрин и обратно етс.
Уточни задачу.Нужно выводить конечный ряд картинок, поэтому скорость винта, скорее всего не критична.
Какого рода картинки надо выводить?
Почему не подходят готовые программы (для слайдшоу, например)?
Можно и jpeg. Любой формат. Главное - как сделать, чтобы можно было их предъявлять быстро, так, чтобы прорисовка изображения совпадала с обновлением кадровой частоты.
Не уверен, что программы для слайдшоу достаточно быстры для такого.
синхронизация с вертикальной развёрткой делается как
...что-то нарисовали(1)...
wait_vsync
...что-то нарисовали(2)...
wait_vsync
..
можно лишь начать рисовать ПОСЛЕ vsync. а успеет или нет - не гарантировано.. разве нет?
Гарантии, что рисование(2) завершится до очередного кадра НЕТ.
DoubleBuffer
Все не то: мерцание заметно при быстрой замене картинок.
![](/images/graemlins/confused.gif)
API функции очень медленные, а DC вообще тормоз
![](/images/graemlins/confused.gif)
Тебе же говорят - DirectX, OpenGL, чо ты к винапи-то придрался?
Ну, пусть будет, например, OpenGL. Главное - чтоб работало. Как?
При использовании опенГЛ/директХ картинка долго и с удовольствием рисуется в специальный буфер внутри видеокарточки, а потом, после завершения отрисовки И прохождения всинка видеокарточка начинает выводить на экран данные из этого буфера. А рисует - в другой. Называется Double Buffering.
http://nehe.gamedev.net/, скачиваешь всё необходимое (типа glut) и начинаешь плавно изучать туториалы. На шестом тебя уже научат текстурировать. Потом пишешь программу, которая загрузит все нужные текстуры и будет их в нужный момент выводить на прямоугольник, точно влезающий во viewing frustum в режиме ортогональной проекции.
А ваще ты такую военную тайну развёл относительно того, что именно тебе нужно, что я ваще не понимаю ничего.
Мб ты свои картинки в фильм склеишь просто?
Лезешь на А ваще ты такую военную тайну развёл относительно того, что именно тебе нужно, что я ваще не понимаю ничего.
Мб ты свои картинки в фильм склеишь просто?
DoubleBuffer
Все не то: мерцание заметно при быстрой замене картинок.
ты уверен, что это связано с выводом меняющихся картинок?
а не с тем, что при этом сначала очищается экран?
ps
Покажи код с помощью, которого ты пытался сделать вывод
pps
Стандартного Gdi (или даже Gdi++) при нормальном использовании обычно за глаза хватает для решения такой задачи.
bglSetSwapInterval(0) disable Vsync
bglSetSwapInterval(1) enable Vsync
bglSetSwapInterval(2) Vsync/2
И не мучайся с проблемой развертки CRTшных моников
![](/images/graemlins/smile.gif)
вот ты лох!
а технология была известна уже лет 15-20, называлось pageflipping
Они же рано или поздно закончатся.
---
...Я работаю антинаучным аферистом...
---
Я не работаю.
Оставить комментарий
dimon72
Нужна программа, которая сможет выводить произвольные картинки, например, BMP на монитор.Картинки могут выводиться на заданный интервал времени. Временной интервал с одной стороны не ограничен, например, десятки секунд, с другой стороны, определяется частотой кадровой развертки монитора.
При этом, должна быть строгая привязка к этой установленной частоте обновления, т.е., прорисовка изображения должна приурочиваться строго к обновлению кадра.
В программировании рублю так себе.
Можно ли решить эту задачу средствами Delphi, APIWin, OpenGL?
Если да, то как? Может у кого есть примеры, фрагменты кода?
Заранее благодарен.