Здравствуйте, lboss, Вы писали:
L>В реальности, есть пару но: 1. если сжимать jpeg или чем-то похожим, то там будет потеря цвета, в результате картинка на клиенте будет плыть — придётся периодически пересылать базовую картинку целиком, 2. чтобы не накапливать разницу, надо базовую картинку всё время менять на текущую. Но тут возникают сложности такого порядка: по идее если вы транслируете потоковое видео, то разные клиенты с разной скоростью принимают данные. И хорошо бы было пропускать кадры в середине если клиент медленный... В общем если интересно — об этом проще почитать.
Ага, вспомнил немного..

На самом деле я когда-то делал похожую штуку но уже напроч забыл что за проблемы были. Вроде как раз описанный мной способ с прямоугольниками (кстати, в каком-то опенсорсе есть тот же способ) показался самым простым чтобы не заморачиваться с разницей и расплытием.
Суть: делаешь скриншот — это база. Его отсылаем. Далее делаем еще скриншот и сравниваем по частям (memcmp тогда гораздо быстрее работало чем StretchBlt\BitBlt) с исходным. Накапливаем разницу и решаем послать ли нам изменившиеся пережатые прямоугольники или опять весь целиком. Отсылаем то, что решили, текущим делаем последний скриншот и так далее.
А в случае с mirror драйвером нам просто нет нужны снимать скриншоты — он нам говорит что изменилось и мы эти части отсылаем. Как-то так вроде было...