| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Алгоритмы > особенности програмирования графики |
| Автор: oleg1973 6.4.2004, 22:00 |
| ddraw мне стало интересно как будет быстрее работать с бекбуфером в видео памяти или со своим в оперативке , потом копировать в бекбуф и флипать в primarysurf? в теории что получаем при обновлении картинки на экране нада уложится в некий промежуток Х обратного хода луча но если к примеру мы слишком долго чтото рисовали в бекбуфере то при flip директ драв как умная система будет ждать обратного хода луча таким образом пролетаем на 1 кадр к примеру и плюс ко всему держать в lock бекбуфер тоже не есть хорошо если мы имеем свой буф в оперативке рисуем там скока влезет по окончанию рисования делаем lock бекбуфера в видеопамяти , копируем туда свой буф и flip в данном варианте всегда попадем в нужный кадр ддрав не будет терять сурфейс (кто знает тот поймет) тоесть пока мы рисуем там себе он свободен скорость пересылки данных я так похимичил на асме 2 такта на 4 байта (если справочник не врет кароче поправте если не прав |
| Автор: p0s0l 6.4.2004, 23:48 |
| Ну дак ждем результатов замеров FPS одного и тоге же теста, реализованного сказанными двумя способами... Ну я посчитал так: 1280x1024x32 ~ 5 Mb, movsd такого объёма у меня затягивается на 20 мс. Т.е. если обеспечить 50 FPS, то всё 100% время проца уйдет на пересылку данных... Правда, следует сказать, что я делал пересылку из ОП в ОП, а не в back-буфер. Но даже если и будет быстрее раза в 2-3, то всё равно, 30-50% времени проца будет сжираться перекидыванием байтиков (для FPS=50). |
| Автор: oleg1973 6.4.2004, 23:58 |
| интересно за сколько бекбуф видео карты перекидывается? а как ты замерял скорость ? |
| Автор: p0s0l 7.4.2004, 00:10 | ||||
Проверь, долго ли тебе это сделать ? Чем гадать-то. По-моему, вот у меня DDR400 на видях, а память DDR какая-то одна из первых. Думаю при перекидывании в бэкбуффер было бы раза в 2 быстрее, но это максимум... Замерял на Delphi:
Если боишься за Move - то зря, он там умный, вначале делит размер на 4 и делает movsd, остаток уже добивает movsb, так что потери тут микроскопические... |