Как оптимизировать процедуры рисования для достижения максимальной частоты обновления в Windows CE? - PullRequest
0 голосов
/ 24 декабря 2010

В моем приложении я рисую некоторый набор линий (например, вертикальный график), и частота обновления будет около 30 раз в секунду.Я рассчитал производительность, и на прорисовку линий уходит 400 миллисекунд, но этого будет недостаточно, поскольку нам приходится обновлять экран каждые 34 миллисекунды.

Я рисую на CDC.

Мы будем рисовать на устройстве Windows CE с процессором 400 МГц.Рисование включает простые API-интерфейсы MFC, такие как MoveTo, LineTo, FillRect и т. Д. На DC View:

CDC* pDC = GetDC(); //draw vertical line from one end of screen to the other 
pDC->MoveTo(some xy Cordinates);
pDC->LineTo(some xy Points);

Как мы можем оптимизировать процедуры рисования?Пожалуйста, предложите любые указатели.

1 Ответ

1 голос
/ 24 декабря 2010

Начиная с Windows Vista, операции GDI (кроме BitBlt) больше не аппаратно ускоряются, а выполняются программно.

Чтобы получить необходимую производительность, вам, вероятно, нужно использовать Direct3D или OpenGl.

Несмотря на то, что этот документ MSDN подразумевает, что, начиная с NT 6.1, hw ускорение GDI возвращается на стол. Тем не менее, я ожидаю, что векторные API, предлагаемые OpenGL и D3D, должны работать намного надежнее - рисование линий GDI - это не то, что разработчики драйверов стремятся оптимизировать.


В ответ на обновление Windows CE, являющейся целью: Direct X , очевидно, был доступен в Windows CE начиная с версии 2.1

.

Я все еще держу пари, что GDI не особенно ускоряется на CE; если есть какая-либо поддержка hw, DirectX был бы способом доступа к ней.

...