2009-11-18 2 views
3

Я реализовал плоттер с использованием wxGraphicsContext. Разработка была выполнена с использованием wxGTK, и графика была очень быстрой.wxGraphicsContext ужасно медленный на Windows

Затем я переключился на Windows (XP) с помощью wxWidgets 2.9.0. И тот же код очень медленный. Для рендеринга кадра требуется около 350 мс. Так как пользователь может перетащить плоттер с помощью мыши для навигации, он чувствует себя очень вялым с такой медленной скоростью обновления.

Я попытался реализовать некоторые части, используя wxDC, и сравнил разницу. С помощью wxDC код работает примерно в 100 раз быстрее.

Насколько я знаю, Cairo и GDI + реализованы в программном обеспечении на данный момент, поэтому нет реальной причины, по которой Cairo должен быть намного быстрее, чем GDI +.

Я что-то не так? Или реализация GDI + просто не стоит на одном уровне с Каиром?

Одно небольшое примечание: теперь я визуализирую wxBitmap с помощью wxGraphicsContext, созданного из wxMemoryDC. Это делается для того, чтобы избежать мерцания на XP, поскольку двойная буферизация там не работает.

+0

В любом случае, вызовы Cairo проходят через GDI по окнам. Так что проблема в другом месте ... – arul

ответ

0

Отрывок из cairo homepage:

Cairo предназначен для получения последовательного вывода на все выходные сред с задействованием дисплея аппаратного ускорения при наличии (например, через расширение X Render.).

Смежные вопросы