Быстрый вывод картинок на экран. Как сделать?
у тебя винчестер не поспеет картинки отдавать.
оценки:
1024х100fps = 768*1024*3(rgb)*100fps ~ 200МБ/сек.
ни один винчестер не угонится
оценки:
1024х100fps = 768*1024*3(rgb)*100fps ~ 200МБ/сек.
ни один винчестер не угонится
Ну картинки заранее в память запихать надобудет.
И скорее всего, придется ботать в сторону DirectX. Но там к частоте особо не увяжешь.
И скорее всего, придется ботать в сторону DirectX. Но там к частоте особо не увяжешь.
Ты не учел сжатие.
Или если тебе верить, то фильмы на компьютере - почти анриал.
Или если тебе верить, то фильмы на компьютере - почти анриал.
а когда картинки, запихнутые в память кончатся - что делать? Или Ахиллес никогда не догонит черепаху?
Автор треда хотел BMP.
со сжатием другая история.
со сжатием другая история.
Уточни задачу.
Какого рода картинки надо выводить?
Почему не подходят готовые программы (для слайдшоу, например)?
Какого рода картинки надо выводить?
Почему не подходят готовые программы (для слайдшоу, например)?
Думаю, что это он неподумав.
По крайней мере принципиальной невозможности использовать сжатый формат вместо несжатого я не вижу.
По крайней мере принципиальной невозможности использовать сжатый формат вместо несжатого я не вижу.
>> Ну картинки заранее в память запихать надобудет.
Насколько я понял, автор хочет менять картинки достаточно редко, но саму смену привязывать к к vsync, чтобы полосок не было.
>> И скорее всего, придется ботать в сторону DirectX. Но там к частоте особо не увяжешь.
Наглая ложь (с).
Что в дх, что в гл всинк врубается одной строчкой. Целиком программу будет проще писать на gl+glut, потому что типа не надо долго и муторно инициализить девайс, обрабатывать его потерю, переход в фуллскрин и обратно етс.
Насколько я понял, автор хочет менять картинки достаточно редко, но саму смену привязывать к к vsync, чтобы полосок не было.
>> И скорее всего, придется ботать в сторону DirectX. Но там к частоте особо не увяжешь.
Наглая ложь (с).
Что в дх, что в гл всинк врубается одной строчкой. Целиком программу будет проще писать на gl+glut, потому что типа не надо долго и муторно инициализить девайс, обрабатывать его потерю, переход в фуллскрин и обратно етс.
Уточни задачу.Нужно выводить конечный ряд картинок, поэтому скорость винта, скорее всего не критична.
Какого рода картинки надо выводить?
Почему не подходят готовые программы (для слайдшоу, например)?
Можно и jpeg. Любой формат. Главное - как сделать, чтобы можно было их предъявлять быстро, так, чтобы прорисовка изображения совпадала с обновлением кадровой частоты.
Не уверен, что программы для слайдшоу достаточно быстры для такого.
насколько я понимаю, гарантировать конец отрисовки до vsync нельзя.
синхронизация с вертикальной развёрткой делается как
можно лишь начать рисовать ПОСЛЕ vsync. а успеет или нет - не гарантировано.. разве нет?
Гарантии, что рисование(2) завершится до очередного кадра НЕТ.
синхронизация с вертикальной развёрткой делается как
...что-то нарисовали(1)...
wait_vsync
...что-то нарисовали(2)...
wait_vsync
..
можно лишь начать рисовать ПОСЛЕ vsync. а успеет или нет - не гарантировано.. разве нет?
Гарантии, что рисование(2) завершится до очередного кадра НЕТ.
Пробовал всякие BitBlit или как там это называется?...
DoubleBuffer
Все не то: мерцание заметно при быстрой замене картинок.
DoubleBuffer
Все не то: мерцание заметно при быстрой замене картинок.

API функции очень медленные, а DC вообще тормоз
Те же соображения, но как же сделать? 

Тебе же говорят - DirectX, OpenGL, чо ты к винапи-то придрался?
Ну, пусть будет, например, OpenGL. Главное - чтоб работало. Как?
Ты понимаешь неправильно.
При использовании опенГЛ/директХ картинка долго и с удовольствием рисуется в специальный буфер внутри видеокарточки, а потом, после завершения отрисовки И прохождения всинка видеокарточка начинает выводить на экран данные из этого буфера. А рисует - в другой. Называется Double Buffering.
При использовании опенГЛ/директХ картинка долго и с удовольствием рисуется в специальный буфер внутри видеокарточки, а потом, после завершения отрисовки И прохождения всинка видеокарточка начинает выводить на экран данные из этого буфера. А рисует - в другой. Называется Double Buffering.
Лезешь на http://nehe.gamedev.net/, скачиваешь всё необходимое (типа glut) и начинаешь плавно изучать туториалы. На шестом тебя уже научат текстурировать. Потом пишешь программу, которая загрузит все нужные текстуры и будет их в нужный момент выводить на прямоугольник, точно влезающий во viewing frustum в режиме ортогональной проекции.
А ваще ты такую военную тайну развёл относительно того, что именно тебе нужно, что я ваще не понимаю ничего.
Мб ты свои картинки в фильм склеишь просто?
А ваще ты такую военную тайну развёл относительно того, что именно тебе нужно, что я ваще не понимаю ничего.
Мб ты свои картинки в фильм склеишь просто?
> Пробовал всякие BitBlit или как там это называется?...
DoubleBuffer
Все не то: мерцание заметно при быстрой замене картинок.
ты уверен, что это связано с выводом меняющихся картинок?
а не с тем, что при этом сначала очищается экран?
ps
Покажи код с помощью, которого ты пытался сделать вывод
pps
Стандартного Gdi (или даже Gdi++) при нормальном использовании обычно за глаза хватает для решения такой задачи.
DoubleBuffer
Все не то: мерцание заметно при быстрой замене картинок.
ты уверен, что это связано с выводом меняющихся картинок?
а не с тем, что при этом сначала очищается экран?
ps
Покажи код с помощью, которого ты пытался сделать вывод
pps
Стандартного Gdi (или даже Gdi++) при нормальном использовании обычно за глаза хватает для решения такой задачи.
В частности у НеХе есть какой-то собственный фреймворк для туториалов, и в нем мега-функция
bglSetSwapInterval(0) disable Vsync
bglSetSwapInterval(1) enable Vsync
bglSetSwapInterval(2) Vsync/2
bglSetSwapInterval(0) disable Vsync
bglSetSwapInterval(1) enable Vsync
bglSetSwapInterval(2) Vsync/2
купи моник ЖК, или проектор...
И не мучайся с проблемой развертки CRTшных моников
)
И не мучайся с проблемой развертки CRTшных моников
)вот ты лох!
при этом никто не даст гарантии, что между двумя vsync картинка успеет прорисоваться во втором буфере.
а технология была известна уже лет 15-20, называлось pageflipping
а технология была известна уже лет 15-20, называлось pageflipping
Сколько нужно этих page-й на-flip-ать?
Они же рано или поздно закончатся.
---
...Я работаю антинаучным аферистом...
Они же рано или поздно закончатся.
---
...Я работаю антинаучным аферистом...
Правильно.
---
Я не работаю.
---
Я не работаю.
Оставить комментарий
dimon72
Нужна программа, которая сможет выводить произвольные картинки, например, BMP на монитор.Картинки могут выводиться на заданный интервал времени. Временной интервал с одной стороны не ограничен, например, десятки секунд, с другой стороны, определяется частотой кадровой развертки монитора.
При этом, должна быть строгая привязка к этой установленной частоте обновления, т.е., прорисовка изображения должна приурочиваться строго к обновлению кадра.
В программировании рублю так себе.
Можно ли решить эту задачу средствами Delphi, APIWin, OpenGL?
Если да, то как? Может у кого есть примеры, фрагменты кода?
Заранее благодарен.