Я реализовал плоттер с использованием wxGraphicsContext. Разработка была выполнена с использованием wxGTK, и графика была очень быстрой.wxGraphicsContext ужасно медленный на Windows
Затем я переключился на Windows (XP) с помощью wxWidgets 2.9.0. И тот же код очень медленный. Для рендеринга кадра требуется около 350 мс. Так как пользователь может перетащить плоттер с помощью мыши для навигации, он чувствует себя очень вялым с такой медленной скоростью обновления.
Я попытался реализовать некоторые части, используя wxDC, и сравнил разницу. С помощью wxDC код работает примерно в 100 раз быстрее.
Насколько я знаю, Cairo и GDI + реализованы в программном обеспечении на данный момент, поэтому нет реальной причины, по которой Cairo должен быть намного быстрее, чем GDI +.
Я что-то не так? Или реализация GDI + просто не стоит на одном уровне с Каиром?
Одно небольшое примечание: теперь я визуализирую wxBitmap с помощью wxGraphicsContext, созданного из wxMemoryDC. Это делается для того, чтобы избежать мерцания на XP, поскольку двойная буферизация там не работает.
В любом случае, вызовы Cairo проходят через GDI по окнам. Так что проблема в другом месте ... – arul